@j-solution/components 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1157) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +130 -0
  3. package/UPDATE_GUIDE.md +441 -0
  4. package/USAGE_GUIDE.md +748 -0
  5. package/assets/images/README.md +18 -0
  6. package/assets/images/logo-fallback.png +0 -0
  7. package/assets/images/logo-fallback.png.README +14 -0
  8. package/assets/images/logo-fallback.png.cjs +2 -0
  9. package/assets/images/logo-fallback.png.cjs.map +1 -0
  10. package/assets/images/logo-fallback.png.js +5 -0
  11. package/assets/images/logo-fallback.png.js.map +1 -0
  12. package/assets/jwms-portal-frontend-DjoLgoaO.css +1 -0
  13. package/assets/styles/j-components.css +1 -0
  14. package/assets/styles/themes.css +337 -0
  15. package/assets/vue.svg +1 -0
  16. package/components/atoms/JAvatar.vue.cjs +2 -0
  17. package/components/atoms/JAvatar.vue.cjs.map +1 -0
  18. package/components/atoms/JAvatar.vue.js +94 -0
  19. package/components/atoms/JAvatar.vue.js.map +1 -0
  20. package/components/atoms/JAvatar.vue2.cjs +2 -0
  21. package/components/atoms/JAvatar.vue2.cjs.map +1 -0
  22. package/components/atoms/JAvatar.vue2.js +5 -0
  23. package/components/atoms/JAvatar.vue2.js.map +1 -0
  24. package/components/atoms/JBadge.vue.cjs +2 -0
  25. package/components/atoms/JBadge.vue.cjs.map +1 -0
  26. package/components/atoms/JBadge.vue.js +61 -0
  27. package/components/atoms/JBadge.vue.js.map +1 -0
  28. package/components/atoms/JBadge.vue2.cjs +2 -0
  29. package/components/atoms/JBadge.vue2.cjs.map +1 -0
  30. package/components/atoms/JBadge.vue2.js +5 -0
  31. package/components/atoms/JBadge.vue2.js.map +1 -0
  32. package/components/atoms/JButton.vue.cjs +2 -0
  33. package/components/atoms/JButton.vue.cjs.map +1 -0
  34. package/components/atoms/JButton.vue.js +88 -0
  35. package/components/atoms/JButton.vue.js.map +1 -0
  36. package/components/atoms/JButton.vue2.cjs +2 -0
  37. package/components/atoms/JButton.vue2.cjs.map +1 -0
  38. package/components/atoms/JButton.vue2.js +5 -0
  39. package/components/atoms/JButton.vue2.js.map +1 -0
  40. package/components/atoms/JCheckbox.vue.cjs +2 -0
  41. package/components/atoms/JCheckbox.vue.cjs.map +1 -0
  42. package/components/atoms/JCheckbox.vue.js +62 -0
  43. package/components/atoms/JCheckbox.vue.js.map +1 -0
  44. package/components/atoms/JCheckbox.vue2.cjs +2 -0
  45. package/components/atoms/JCheckbox.vue2.cjs.map +1 -0
  46. package/components/atoms/JCheckbox.vue2.js +5 -0
  47. package/components/atoms/JCheckbox.vue2.js.map +1 -0
  48. package/components/atoms/JCombo.vue.cjs +2 -0
  49. package/components/atoms/JCombo.vue.cjs.map +1 -0
  50. package/components/atoms/JCombo.vue.js +88 -0
  51. package/components/atoms/JCombo.vue.js.map +1 -0
  52. package/components/atoms/JCombo.vue2.cjs +2 -0
  53. package/components/atoms/JCombo.vue2.cjs.map +1 -0
  54. package/components/atoms/JCombo.vue2.js +5 -0
  55. package/components/atoms/JCombo.vue2.js.map +1 -0
  56. package/components/atoms/JDatepicker.vue.cjs +2 -0
  57. package/components/atoms/JDatepicker.vue.cjs.map +1 -0
  58. package/components/atoms/JDatepicker.vue.js +120 -0
  59. package/components/atoms/JDatepicker.vue.js.map +1 -0
  60. package/components/atoms/JDatepicker.vue2.cjs +2 -0
  61. package/components/atoms/JDatepicker.vue2.cjs.map +1 -0
  62. package/components/atoms/JDatepicker.vue2.js +5 -0
  63. package/components/atoms/JDatepicker.vue2.js.map +1 -0
  64. package/components/atoms/JDivider.vue.cjs +2 -0
  65. package/components/atoms/JDivider.vue.cjs.map +1 -0
  66. package/components/atoms/JDivider.vue.js +32 -0
  67. package/components/atoms/JDivider.vue.js.map +1 -0
  68. package/components/atoms/JDivider.vue2.cjs +2 -0
  69. package/components/atoms/JDivider.vue2.cjs.map +1 -0
  70. package/components/atoms/JDivider.vue2.js +5 -0
  71. package/components/atoms/JDivider.vue2.js.map +1 -0
  72. package/components/atoms/JGrid.vue.cjs +7 -0
  73. package/components/atoms/JGrid.vue.cjs.map +1 -0
  74. package/components/atoms/JGrid.vue.js +13 -0
  75. package/components/atoms/JGrid.vue.js.map +1 -0
  76. package/components/atoms/JGrid.vue2.cjs +2 -0
  77. package/components/atoms/JGrid.vue2.cjs.map +1 -0
  78. package/components/atoms/JGrid.vue2.js +107 -0
  79. package/components/atoms/JGrid.vue2.js.map +1 -0
  80. package/components/atoms/JIcon.vue.cjs +2 -0
  81. package/components/atoms/JIcon.vue.cjs.map +1 -0
  82. package/components/atoms/JIcon.vue.js +192 -0
  83. package/components/atoms/JIcon.vue.js.map +1 -0
  84. package/components/atoms/JIcon.vue2.cjs +2 -0
  85. package/components/atoms/JIcon.vue2.cjs.map +1 -0
  86. package/components/atoms/JIcon.vue2.js +5 -0
  87. package/components/atoms/JIcon.vue2.js.map +1 -0
  88. package/components/atoms/JImage.vue.cjs +2 -0
  89. package/components/atoms/JImage.vue.cjs.map +1 -0
  90. package/components/atoms/JImage.vue.js +79 -0
  91. package/components/atoms/JImage.vue.js.map +1 -0
  92. package/components/atoms/JImage.vue2.cjs +2 -0
  93. package/components/atoms/JImage.vue2.cjs.map +1 -0
  94. package/components/atoms/JImage.vue2.js +5 -0
  95. package/components/atoms/JImage.vue2.js.map +1 -0
  96. package/components/atoms/JInput.vue.cjs +2 -0
  97. package/components/atoms/JInput.vue.cjs.map +1 -0
  98. package/components/atoms/JInput.vue.js +68 -0
  99. package/components/atoms/JInput.vue.js.map +1 -0
  100. package/components/atoms/JInput.vue2.cjs +2 -0
  101. package/components/atoms/JInput.vue2.cjs.map +1 -0
  102. package/components/atoms/JInput.vue2.js +5 -0
  103. package/components/atoms/JInput.vue2.js.map +1 -0
  104. package/components/atoms/JKbd.vue.cjs +2 -0
  105. package/components/atoms/JKbd.vue.cjs.map +1 -0
  106. package/components/atoms/JKbd.vue.js +52 -0
  107. package/components/atoms/JKbd.vue.js.map +1 -0
  108. package/components/atoms/JKbd.vue2.cjs +2 -0
  109. package/components/atoms/JKbd.vue2.cjs.map +1 -0
  110. package/components/atoms/JKbd.vue2.js +5 -0
  111. package/components/atoms/JKbd.vue2.js.map +1 -0
  112. package/components/atoms/JLabel.vue.cjs +2 -0
  113. package/components/atoms/JLabel.vue.cjs.map +1 -0
  114. package/components/atoms/JLabel.vue.js +67 -0
  115. package/components/atoms/JLabel.vue.js.map +1 -0
  116. package/components/atoms/JLabel.vue2.cjs +2 -0
  117. package/components/atoms/JLabel.vue2.cjs.map +1 -0
  118. package/components/atoms/JLabel.vue2.js +5 -0
  119. package/components/atoms/JLabel.vue2.js.map +1 -0
  120. package/components/atoms/JLink.vue.cjs +2 -0
  121. package/components/atoms/JLink.vue.cjs.map +1 -0
  122. package/components/atoms/JLink.vue.js +51 -0
  123. package/components/atoms/JLink.vue.js.map +1 -0
  124. package/components/atoms/JLink.vue2.cjs +2 -0
  125. package/components/atoms/JLink.vue2.cjs.map +1 -0
  126. package/components/atoms/JLink.vue2.js +5 -0
  127. package/components/atoms/JLink.vue2.js.map +1 -0
  128. package/components/atoms/JPopover.vue.cjs +2 -0
  129. package/components/atoms/JPopover.vue.cjs.map +1 -0
  130. package/components/atoms/JPopover.vue.js +100 -0
  131. package/components/atoms/JPopover.vue.js.map +1 -0
  132. package/components/atoms/JPopover.vue2.cjs +2 -0
  133. package/components/atoms/JPopover.vue2.cjs.map +1 -0
  134. package/components/atoms/JPopover.vue2.js +5 -0
  135. package/components/atoms/JPopover.vue2.js.map +1 -0
  136. package/components/atoms/JProgress.vue.cjs +2 -0
  137. package/components/atoms/JProgress.vue.cjs.map +1 -0
  138. package/components/atoms/JProgress.vue.js +189 -0
  139. package/components/atoms/JProgress.vue.js.map +1 -0
  140. package/components/atoms/JProgress.vue3.cjs +2 -0
  141. package/components/atoms/JProgress.vue3.cjs.map +1 -0
  142. package/components/atoms/JProgress.vue3.js +6 -0
  143. package/components/atoms/JProgress.vue3.js.map +1 -0
  144. package/components/atoms/JRadio.vue.cjs +2 -0
  145. package/components/atoms/JRadio.vue.cjs.map +1 -0
  146. package/components/atoms/JRadio.vue.js +94 -0
  147. package/components/atoms/JRadio.vue.js.map +1 -0
  148. package/components/atoms/JRadio.vue2.cjs +2 -0
  149. package/components/atoms/JRadio.vue2.cjs.map +1 -0
  150. package/components/atoms/JRadio.vue2.js +5 -0
  151. package/components/atoms/JRadio.vue2.js.map +1 -0
  152. package/components/atoms/JSearchCombo.vue.cjs +2 -0
  153. package/components/atoms/JSearchCombo.vue.cjs.map +1 -0
  154. package/components/atoms/JSearchCombo.vue.js +146 -0
  155. package/components/atoms/JSearchCombo.vue.js.map +1 -0
  156. package/components/atoms/JSearchCombo.vue2.cjs +2 -0
  157. package/components/atoms/JSearchCombo.vue2.cjs.map +1 -0
  158. package/components/atoms/JSearchCombo.vue2.js +5 -0
  159. package/components/atoms/JSearchCombo.vue2.js.map +1 -0
  160. package/components/atoms/JSpinner.vue.cjs +2 -0
  161. package/components/atoms/JSpinner.vue.cjs.map +1 -0
  162. package/components/atoms/JSpinner.vue.js +65 -0
  163. package/components/atoms/JSpinner.vue.js.map +1 -0
  164. package/components/atoms/JSpinner.vue2.cjs +2 -0
  165. package/components/atoms/JSpinner.vue2.cjs.map +1 -0
  166. package/components/atoms/JSpinner.vue2.js +5 -0
  167. package/components/atoms/JSpinner.vue2.js.map +1 -0
  168. package/components/atoms/JSwitch.vue.cjs +2 -0
  169. package/components/atoms/JSwitch.vue.cjs.map +1 -0
  170. package/components/atoms/JSwitch.vue.js +60 -0
  171. package/components/atoms/JSwitch.vue.js.map +1 -0
  172. package/components/atoms/JSwitch.vue2.cjs +2 -0
  173. package/components/atoms/JSwitch.vue2.cjs.map +1 -0
  174. package/components/atoms/JSwitch.vue2.js +5 -0
  175. package/components/atoms/JSwitch.vue2.js.map +1 -0
  176. package/components/atoms/JTextarea.vue.cjs +2 -0
  177. package/components/atoms/JTextarea.vue.cjs.map +1 -0
  178. package/components/atoms/JTextarea.vue.js +66 -0
  179. package/components/atoms/JTextarea.vue.js.map +1 -0
  180. package/components/atoms/JTextarea.vue2.cjs +2 -0
  181. package/components/atoms/JTextarea.vue2.cjs.map +1 -0
  182. package/components/atoms/JTextarea.vue2.js +5 -0
  183. package/components/atoms/JTextarea.vue2.js.map +1 -0
  184. package/components/atoms/JTooltip.vue.cjs +2 -0
  185. package/components/atoms/JTooltip.vue.cjs.map +1 -0
  186. package/components/atoms/JTooltip.vue.js +130 -0
  187. package/components/atoms/JTooltip.vue.js.map +1 -0
  188. package/components/atoms/JTooltip.vue2.cjs +2 -0
  189. package/components/atoms/JTooltip.vue2.cjs.map +1 -0
  190. package/components/atoms/JTooltip.vue2.js +5 -0
  191. package/components/atoms/JTooltip.vue2.js.map +1 -0
  192. package/components/molecules/JAccordion.vue.cjs +2 -0
  193. package/components/molecules/JAccordion.vue.cjs.map +1 -0
  194. package/components/molecules/JAccordion.vue.js +61 -0
  195. package/components/molecules/JAccordion.vue.js.map +1 -0
  196. package/components/molecules/JAccordion.vue2.cjs +2 -0
  197. package/components/molecules/JAccordion.vue2.cjs.map +1 -0
  198. package/components/molecules/JAccordion.vue2.js +5 -0
  199. package/components/molecules/JAccordion.vue2.js.map +1 -0
  200. package/components/molecules/JAlert.vue.cjs +2 -0
  201. package/components/molecules/JAlert.vue.cjs.map +1 -0
  202. package/components/molecules/JAlert.vue.js +84 -0
  203. package/components/molecules/JAlert.vue.js.map +1 -0
  204. package/components/molecules/JAlert.vue2.cjs +2 -0
  205. package/components/molecules/JAlert.vue2.cjs.map +1 -0
  206. package/components/molecules/JAlert.vue2.js +5 -0
  207. package/components/molecules/JAlert.vue2.js.map +1 -0
  208. package/components/molecules/JBreadcrumb.vue.cjs +2 -0
  209. package/components/molecules/JBreadcrumb.vue.cjs.map +1 -0
  210. package/components/molecules/JBreadcrumb.vue.js +87 -0
  211. package/components/molecules/JBreadcrumb.vue.js.map +1 -0
  212. package/components/molecules/JBreadcrumb.vue2.cjs +2 -0
  213. package/components/molecules/JBreadcrumb.vue2.cjs.map +1 -0
  214. package/components/molecules/JBreadcrumb.vue2.js +5 -0
  215. package/components/molecules/JBreadcrumb.vue2.js.map +1 -0
  216. package/components/molecules/JButtonGroup.vue.cjs +2 -0
  217. package/components/molecules/JButtonGroup.vue.cjs.map +1 -0
  218. package/components/molecules/JButtonGroup.vue.js +58 -0
  219. package/components/molecules/JButtonGroup.vue.js.map +1 -0
  220. package/components/molecules/JButtonGroup.vue2.cjs +2 -0
  221. package/components/molecules/JButtonGroup.vue2.cjs.map +1 -0
  222. package/components/molecules/JButtonGroup.vue2.js +5 -0
  223. package/components/molecules/JButtonGroup.vue2.js.map +1 -0
  224. package/components/molecules/JCard.vue.cjs +2 -0
  225. package/components/molecules/JCard.vue.cjs.map +1 -0
  226. package/components/molecules/JCard.vue.js +61 -0
  227. package/components/molecules/JCard.vue.js.map +1 -0
  228. package/components/molecules/JCard.vue2.cjs +2 -0
  229. package/components/molecules/JCard.vue2.cjs.map +1 -0
  230. package/components/molecules/JCard.vue2.js +5 -0
  231. package/components/molecules/JCard.vue2.js.map +1 -0
  232. package/components/molecules/JContextMenu.vue.cjs +7 -0
  233. package/components/molecules/JContextMenu.vue.cjs.map +1 -0
  234. package/components/molecules/JContextMenu.vue.js +13 -0
  235. package/components/molecules/JContextMenu.vue.js.map +1 -0
  236. package/components/molecules/JContextMenu.vue2.cjs +2 -0
  237. package/components/molecules/JContextMenu.vue2.cjs.map +1 -0
  238. package/components/molecules/JContextMenu.vue2.js +138 -0
  239. package/components/molecules/JContextMenu.vue2.js.map +1 -0
  240. package/components/molecules/JFormField.vue.cjs +2 -0
  241. package/components/molecules/JFormField.vue.cjs.map +1 -0
  242. package/components/molecules/JFormField.vue.js +259 -0
  243. package/components/molecules/JFormField.vue.js.map +1 -0
  244. package/components/molecules/JFormField.vue3.cjs +2 -0
  245. package/components/molecules/JFormField.vue3.cjs.map +1 -0
  246. package/components/molecules/JFormField.vue3.js +6 -0
  247. package/components/molecules/JFormField.vue3.js.map +1 -0
  248. package/components/molecules/JGroupCombo.vue.cjs +2 -0
  249. package/components/molecules/JGroupCombo.vue.cjs.map +1 -0
  250. package/components/molecules/JGroupCombo.vue.js +102 -0
  251. package/components/molecules/JGroupCombo.vue.js.map +1 -0
  252. package/components/molecules/JGroupCombo.vue2.cjs +2 -0
  253. package/components/molecules/JGroupCombo.vue2.cjs.map +1 -0
  254. package/components/molecules/JGroupCombo.vue2.js +5 -0
  255. package/components/molecules/JGroupCombo.vue2.js.map +1 -0
  256. package/components/molecules/JSearchAddr.vue.cjs +7 -0
  257. package/components/molecules/JSearchAddr.vue.cjs.map +1 -0
  258. package/components/molecules/JSearchAddr.vue.js +13 -0
  259. package/components/molecules/JSearchAddr.vue.js.map +1 -0
  260. package/components/molecules/JSearchAddr.vue2.cjs +2 -0
  261. package/components/molecules/JSearchAddr.vue2.cjs.map +1 -0
  262. package/components/molecules/JSearchAddr.vue2.js +171 -0
  263. package/components/molecules/JSearchAddr.vue2.js.map +1 -0
  264. package/components/molecules/JTabs.vue.cjs +7 -0
  265. package/components/molecules/JTabs.vue.cjs.map +1 -0
  266. package/components/molecules/JTabs.vue.js +13 -0
  267. package/components/molecules/JTabs.vue.js.map +1 -0
  268. package/components/molecules/JTabs.vue2.cjs +2 -0
  269. package/components/molecules/JTabs.vue2.cjs.map +1 -0
  270. package/components/molecules/JTabs.vue2.js +130 -0
  271. package/components/molecules/JTabs.vue2.js.map +1 -0
  272. package/components/molecules/JTitlebar.vue.cjs +2 -0
  273. package/components/molecules/JTitlebar.vue.cjs.map +1 -0
  274. package/components/molecules/JTitlebar.vue.js +144 -0
  275. package/components/molecules/JTitlebar.vue.js.map +1 -0
  276. package/components/molecules/JTitlebar.vue2.cjs +2 -0
  277. package/components/molecules/JTitlebar.vue2.cjs.map +1 -0
  278. package/components/molecules/JTitlebar.vue2.js +5 -0
  279. package/components/molecules/JTitlebar.vue2.js.map +1 -0
  280. package/components/organisms/JDynamicForm.vue.cjs +7 -0
  281. package/components/organisms/JDynamicForm.vue.cjs.map +1 -0
  282. package/components/organisms/JDynamicForm.vue.js +13 -0
  283. package/components/organisms/JDynamicForm.vue.js.map +1 -0
  284. package/components/organisms/JDynamicForm.vue2.cjs +2 -0
  285. package/components/organisms/JDynamicForm.vue2.cjs.map +1 -0
  286. package/components/organisms/JDynamicForm.vue2.js +401 -0
  287. package/components/organisms/JDynamicForm.vue2.js.map +1 -0
  288. package/components/organisms/JDynamicTabs.vue.cjs +2 -0
  289. package/components/organisms/JDynamicTabs.vue.cjs.map +1 -0
  290. package/components/organisms/JDynamicTabs.vue.js +116 -0
  291. package/components/organisms/JDynamicTabs.vue.js.map +1 -0
  292. package/components/organisms/JDynamicTabs.vue2.cjs +2 -0
  293. package/components/organisms/JDynamicTabs.vue2.cjs.map +1 -0
  294. package/components/organisms/JDynamicTabs.vue2.js +5 -0
  295. package/components/organisms/JDynamicTabs.vue2.js.map +1 -0
  296. package/components/organisms/JFormModal.vue.cjs +2 -0
  297. package/components/organisms/JFormModal.vue.cjs.map +1 -0
  298. package/components/organisms/JFormModal.vue.js +175 -0
  299. package/components/organisms/JFormModal.vue.js.map +1 -0
  300. package/components/organisms/JFormModal.vue2.cjs +2 -0
  301. package/components/organisms/JFormModal.vue2.cjs.map +1 -0
  302. package/components/organisms/JFormModal.vue2.js +5 -0
  303. package/components/organisms/JFormModal.vue2.js.map +1 -0
  304. package/components/organisms/JHeader.vue.cjs +2 -0
  305. package/components/organisms/JHeader.vue.cjs.map +1 -0
  306. package/components/organisms/JHeader.vue.js +450 -0
  307. package/components/organisms/JHeader.vue.js.map +1 -0
  308. package/components/organisms/JHeader.vue2.cjs +2 -0
  309. package/components/organisms/JHeader.vue2.cjs.map +1 -0
  310. package/components/organisms/JHeader.vue2.js +5 -0
  311. package/components/organisms/JHeader.vue2.js.map +1 -0
  312. package/components/organisms/JModal.vue.cjs +2 -0
  313. package/components/organisms/JModal.vue.cjs.map +1 -0
  314. package/components/organisms/JModal.vue.js +170 -0
  315. package/components/organisms/JModal.vue.js.map +1 -0
  316. package/components/organisms/JModal.vue2.cjs +2 -0
  317. package/components/organisms/JModal.vue2.cjs.map +1 -0
  318. package/components/organisms/JModal.vue2.js +5 -0
  319. package/components/organisms/JModal.vue2.js.map +1 -0
  320. package/components/organisms/JPageContainer.vue.cjs +2 -0
  321. package/components/organisms/JPageContainer.vue.cjs.map +1 -0
  322. package/components/organisms/JPageContainer.vue.js +72 -0
  323. package/components/organisms/JPageContainer.vue.js.map +1 -0
  324. package/components/organisms/JPageContainer.vue2.cjs +2 -0
  325. package/components/organisms/JPageContainer.vue2.cjs.map +1 -0
  326. package/components/organisms/JPageContainer.vue2.js +5 -0
  327. package/components/organisms/JPageContainer.vue2.js.map +1 -0
  328. package/components/organisms/JSearchPanel.vue.cjs +7 -0
  329. package/components/organisms/JSearchPanel.vue.cjs.map +1 -0
  330. package/components/organisms/JSearchPanel.vue.js +13 -0
  331. package/components/organisms/JSearchPanel.vue.js.map +1 -0
  332. package/components/organisms/JSearchPanel.vue2.cjs +2 -0
  333. package/components/organisms/JSearchPanel.vue2.cjs.map +1 -0
  334. package/components/organisms/JSearchPanel.vue2.js +180 -0
  335. package/components/organisms/JSearchPanel.vue2.js.map +1 -0
  336. package/components/organisms/JSidebarAdvanced.vue.cjs +7 -0
  337. package/components/organisms/JSidebarAdvanced.vue.cjs.map +1 -0
  338. package/components/organisms/JSidebarAdvanced.vue.js +13 -0
  339. package/components/organisms/JSidebarAdvanced.vue.js.map +1 -0
  340. package/components/organisms/JSidebarAdvanced.vue2.cjs +2 -0
  341. package/components/organisms/JSidebarAdvanced.vue2.cjs.map +1 -0
  342. package/components/organisms/JSidebarAdvanced.vue2.js +236 -0
  343. package/components/organisms/JSidebarAdvanced.vue2.js.map +1 -0
  344. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.cjs +2 -0
  345. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.cjs.map +1 -0
  346. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.js +132 -0
  347. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.js.map +1 -0
  348. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue2.cjs +2 -0
  349. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue2.cjs.map +1 -0
  350. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue2.js +5 -0
  351. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue2.js.map +1 -0
  352. package/components/organisms/JSidebarSimple.vue.cjs +7 -0
  353. package/components/organisms/JSidebarSimple.vue.cjs.map +1 -0
  354. package/components/organisms/JSidebarSimple.vue.js +13 -0
  355. package/components/organisms/JSidebarSimple.vue.js.map +1 -0
  356. package/components/organisms/JSidebarSimple.vue2.cjs +2 -0
  357. package/components/organisms/JSidebarSimple.vue2.cjs.map +1 -0
  358. package/components/organisms/JSidebarSimple.vue2.js +110 -0
  359. package/components/organisms/JSidebarSimple.vue2.js.map +1 -0
  360. package/components/shadcn/Accordion.vue.cjs +2 -0
  361. package/components/shadcn/Accordion.vue.cjs.map +1 -0
  362. package/components/shadcn/Accordion.vue.js +31 -0
  363. package/components/shadcn/Accordion.vue.js.map +1 -0
  364. package/components/shadcn/Accordion.vue2.cjs +2 -0
  365. package/components/shadcn/Accordion.vue2.cjs.map +1 -0
  366. package/components/shadcn/Accordion.vue2.js +5 -0
  367. package/components/shadcn/Accordion.vue2.js.map +1 -0
  368. package/components/shadcn/AccordionContent.vue.cjs +2 -0
  369. package/components/shadcn/AccordionContent.vue.cjs.map +1 -0
  370. package/components/shadcn/AccordionContent.vue.js +30 -0
  371. package/components/shadcn/AccordionContent.vue.js.map +1 -0
  372. package/components/shadcn/AccordionContent.vue2.cjs +2 -0
  373. package/components/shadcn/AccordionContent.vue2.cjs.map +1 -0
  374. package/components/shadcn/AccordionContent.vue2.js +5 -0
  375. package/components/shadcn/AccordionContent.vue2.js.map +1 -0
  376. package/components/shadcn/AccordionItem.vue.cjs +2 -0
  377. package/components/shadcn/AccordionItem.vue.cjs.map +1 -0
  378. package/components/shadcn/AccordionItem.vue.js +30 -0
  379. package/components/shadcn/AccordionItem.vue.js.map +1 -0
  380. package/components/shadcn/AccordionItem.vue2.cjs +2 -0
  381. package/components/shadcn/AccordionItem.vue2.cjs.map +1 -0
  382. package/components/shadcn/AccordionItem.vue2.js +5 -0
  383. package/components/shadcn/AccordionItem.vue2.js.map +1 -0
  384. package/components/shadcn/AccordionTrigger.vue.cjs +2 -0
  385. package/components/shadcn/AccordionTrigger.vue.cjs.map +1 -0
  386. package/components/shadcn/AccordionTrigger.vue.js +39 -0
  387. package/components/shadcn/AccordionTrigger.vue.js.map +1 -0
  388. package/components/shadcn/AccordionTrigger.vue2.cjs +2 -0
  389. package/components/shadcn/AccordionTrigger.vue2.cjs.map +1 -0
  390. package/components/shadcn/AccordionTrigger.vue2.js +5 -0
  391. package/components/shadcn/AccordionTrigger.vue2.js.map +1 -0
  392. package/components/shadcn/Alert.vue.cjs +2 -0
  393. package/components/shadcn/Alert.vue.cjs.map +1 -0
  394. package/components/shadcn/Alert.vue.js +23 -0
  395. package/components/shadcn/Alert.vue.js.map +1 -0
  396. package/components/shadcn/Alert.vue2.cjs +2 -0
  397. package/components/shadcn/Alert.vue2.cjs.map +1 -0
  398. package/components/shadcn/Alert.vue2.js +5 -0
  399. package/components/shadcn/Alert.vue2.js.map +1 -0
  400. package/components/shadcn/AlertDescription.vue.cjs +2 -0
  401. package/components/shadcn/AlertDescription.vue.cjs.map +1 -0
  402. package/components/shadcn/AlertDescription.vue.js +20 -0
  403. package/components/shadcn/AlertDescription.vue.js.map +1 -0
  404. package/components/shadcn/AlertDescription.vue2.cjs +2 -0
  405. package/components/shadcn/AlertDescription.vue2.cjs.map +1 -0
  406. package/components/shadcn/AlertDescription.vue2.js +5 -0
  407. package/components/shadcn/AlertDescription.vue2.js.map +1 -0
  408. package/components/shadcn/AlertTitle.vue.cjs +2 -0
  409. package/components/shadcn/AlertTitle.vue.cjs.map +1 -0
  410. package/components/shadcn/AlertTitle.vue.js +20 -0
  411. package/components/shadcn/AlertTitle.vue.js.map +1 -0
  412. package/components/shadcn/AlertTitle.vue2.cjs +2 -0
  413. package/components/shadcn/AlertTitle.vue2.cjs.map +1 -0
  414. package/components/shadcn/AlertTitle.vue2.js +5 -0
  415. package/components/shadcn/AlertTitle.vue2.js.map +1 -0
  416. package/components/shadcn/Avatar.vue.cjs +2 -0
  417. package/components/shadcn/Avatar.vue.cjs.map +1 -0
  418. package/components/shadcn/Avatar.vue.js +27 -0
  419. package/components/shadcn/Avatar.vue.js.map +1 -0
  420. package/components/shadcn/Avatar.vue2.cjs +2 -0
  421. package/components/shadcn/Avatar.vue2.cjs.map +1 -0
  422. package/components/shadcn/Avatar.vue2.js +5 -0
  423. package/components/shadcn/Avatar.vue2.js.map +1 -0
  424. package/components/shadcn/AvatarFallback.vue.cjs +2 -0
  425. package/components/shadcn/AvatarFallback.vue.cjs.map +1 -0
  426. package/components/shadcn/AvatarFallback.vue.js +23 -0
  427. package/components/shadcn/AvatarFallback.vue.js.map +1 -0
  428. package/components/shadcn/AvatarFallback.vue2.cjs +2 -0
  429. package/components/shadcn/AvatarFallback.vue2.cjs.map +1 -0
  430. package/components/shadcn/AvatarFallback.vue2.js +5 -0
  431. package/components/shadcn/AvatarFallback.vue2.js.map +1 -0
  432. package/components/shadcn/AvatarImage.vue.cjs +2 -0
  433. package/components/shadcn/AvatarImage.vue.cjs.map +1 -0
  434. package/components/shadcn/AvatarImage.vue.js +25 -0
  435. package/components/shadcn/AvatarImage.vue.js.map +1 -0
  436. package/components/shadcn/AvatarImage.vue2.cjs +2 -0
  437. package/components/shadcn/AvatarImage.vue2.cjs.map +1 -0
  438. package/components/shadcn/AvatarImage.vue2.js +5 -0
  439. package/components/shadcn/AvatarImage.vue2.js.map +1 -0
  440. package/components/shadcn/Badge.vue.cjs +2 -0
  441. package/components/shadcn/Badge.vue.cjs.map +1 -0
  442. package/components/shadcn/Badge.vue.js +22 -0
  443. package/components/shadcn/Badge.vue.js.map +1 -0
  444. package/components/shadcn/Badge.vue2.cjs +2 -0
  445. package/components/shadcn/Badge.vue2.cjs.map +1 -0
  446. package/components/shadcn/Badge.vue2.js +5 -0
  447. package/components/shadcn/Badge.vue2.js.map +1 -0
  448. package/components/shadcn/Button.vue.cjs +2 -0
  449. package/components/shadcn/Button.vue.cjs.map +1 -0
  450. package/components/shadcn/Button.vue.js +31 -0
  451. package/components/shadcn/Button.vue.js.map +1 -0
  452. package/components/shadcn/Button.vue2.cjs +2 -0
  453. package/components/shadcn/Button.vue2.cjs.map +1 -0
  454. package/components/shadcn/Button.vue2.js +5 -0
  455. package/components/shadcn/Button.vue2.js.map +1 -0
  456. package/components/shadcn/ButtonGroup.vue.cjs +2 -0
  457. package/components/shadcn/ButtonGroup.vue.cjs.map +1 -0
  458. package/components/shadcn/ButtonGroup.vue.js +25 -0
  459. package/components/shadcn/ButtonGroup.vue.js.map +1 -0
  460. package/components/shadcn/ButtonGroup.vue2.cjs +2 -0
  461. package/components/shadcn/ButtonGroup.vue2.cjs.map +1 -0
  462. package/components/shadcn/ButtonGroup.vue2.js +5 -0
  463. package/components/shadcn/ButtonGroup.vue2.js.map +1 -0
  464. package/components/shadcn/ButtonGroupSeparator.vue.cjs +2 -0
  465. package/components/shadcn/ButtonGroupSeparator.vue.cjs.map +1 -0
  466. package/components/shadcn/ButtonGroupSeparator.vue.js +29 -0
  467. package/components/shadcn/ButtonGroupSeparator.vue.js.map +1 -0
  468. package/components/shadcn/ButtonGroupSeparator.vue2.cjs +2 -0
  469. package/components/shadcn/ButtonGroupSeparator.vue2.cjs.map +1 -0
  470. package/components/shadcn/ButtonGroupSeparator.vue2.js +5 -0
  471. package/components/shadcn/ButtonGroupSeparator.vue2.js.map +1 -0
  472. package/components/shadcn/Calendar.vue.cjs +2 -0
  473. package/components/shadcn/Calendar.vue.cjs.map +1 -0
  474. package/components/shadcn/Calendar.vue.js +121 -0
  475. package/components/shadcn/Calendar.vue.js.map +1 -0
  476. package/components/shadcn/Calendar.vue2.cjs +2 -0
  477. package/components/shadcn/Calendar.vue2.cjs.map +1 -0
  478. package/components/shadcn/Calendar.vue2.js +5 -0
  479. package/components/shadcn/Calendar.vue2.js.map +1 -0
  480. package/components/shadcn/CalendarCell.vue.cjs +2 -0
  481. package/components/shadcn/CalendarCell.vue.cjs.map +1 -0
  482. package/components/shadcn/CalendarCell.vue.js +5 -0
  483. package/components/shadcn/CalendarCell.vue.js.map +1 -0
  484. package/components/shadcn/CalendarCell.vue2.cjs +2 -0
  485. package/components/shadcn/CalendarCell.vue2.cjs.map +1 -0
  486. package/components/shadcn/CalendarCell.vue2.js +28 -0
  487. package/components/shadcn/CalendarCell.vue2.js.map +1 -0
  488. package/components/shadcn/CalendarCellTrigger.vue.cjs +2 -0
  489. package/components/shadcn/CalendarCellTrigger.vue.cjs.map +1 -0
  490. package/components/shadcn/CalendarCellTrigger.vue.js +5 -0
  491. package/components/shadcn/CalendarCellTrigger.vue.js.map +1 -0
  492. package/components/shadcn/CalendarCellTrigger.vue2.cjs +2 -0
  493. package/components/shadcn/CalendarCellTrigger.vue2.cjs.map +1 -0
  494. package/components/shadcn/CalendarCellTrigger.vue2.js +43 -0
  495. package/components/shadcn/CalendarCellTrigger.vue2.js.map +1 -0
  496. package/components/shadcn/CalendarGrid.vue.cjs +2 -0
  497. package/components/shadcn/CalendarGrid.vue.cjs.map +1 -0
  498. package/components/shadcn/CalendarGrid.vue.js +5 -0
  499. package/components/shadcn/CalendarGrid.vue.js.map +1 -0
  500. package/components/shadcn/CalendarGrid.vue2.cjs +2 -0
  501. package/components/shadcn/CalendarGrid.vue2.cjs.map +1 -0
  502. package/components/shadcn/CalendarGrid.vue2.js +27 -0
  503. package/components/shadcn/CalendarGrid.vue2.js.map +1 -0
  504. package/components/shadcn/CalendarGridBody.vue.cjs +2 -0
  505. package/components/shadcn/CalendarGridBody.vue.cjs.map +1 -0
  506. package/components/shadcn/CalendarGridBody.vue.js +5 -0
  507. package/components/shadcn/CalendarGridBody.vue.js.map +1 -0
  508. package/components/shadcn/CalendarGridBody.vue2.cjs +2 -0
  509. package/components/shadcn/CalendarGridBody.vue2.cjs.map +1 -0
  510. package/components/shadcn/CalendarGridBody.vue2.js +22 -0
  511. package/components/shadcn/CalendarGridBody.vue2.js.map +1 -0
  512. package/components/shadcn/CalendarGridHead.vue.cjs +2 -0
  513. package/components/shadcn/CalendarGridHead.vue.cjs.map +1 -0
  514. package/components/shadcn/CalendarGridHead.vue.js +5 -0
  515. package/components/shadcn/CalendarGridHead.vue.js.map +1 -0
  516. package/components/shadcn/CalendarGridHead.vue2.cjs +2 -0
  517. package/components/shadcn/CalendarGridHead.vue2.cjs.map +1 -0
  518. package/components/shadcn/CalendarGridHead.vue2.js +22 -0
  519. package/components/shadcn/CalendarGridHead.vue2.js.map +1 -0
  520. package/components/shadcn/CalendarGridRow.vue.cjs +2 -0
  521. package/components/shadcn/CalendarGridRow.vue.cjs.map +1 -0
  522. package/components/shadcn/CalendarGridRow.vue.js +5 -0
  523. package/components/shadcn/CalendarGridRow.vue.js.map +1 -0
  524. package/components/shadcn/CalendarGridRow.vue2.cjs +2 -0
  525. package/components/shadcn/CalendarGridRow.vue2.cjs.map +1 -0
  526. package/components/shadcn/CalendarGridRow.vue2.js +27 -0
  527. package/components/shadcn/CalendarGridRow.vue2.js.map +1 -0
  528. package/components/shadcn/CalendarHeadCell.vue.cjs +2 -0
  529. package/components/shadcn/CalendarHeadCell.vue.cjs.map +1 -0
  530. package/components/shadcn/CalendarHeadCell.vue.js +5 -0
  531. package/components/shadcn/CalendarHeadCell.vue.js.map +1 -0
  532. package/components/shadcn/CalendarHeadCell.vue2.cjs +2 -0
  533. package/components/shadcn/CalendarHeadCell.vue2.cjs.map +1 -0
  534. package/components/shadcn/CalendarHeadCell.vue2.js +27 -0
  535. package/components/shadcn/CalendarHeadCell.vue2.js.map +1 -0
  536. package/components/shadcn/CalendarHeader.vue.cjs +2 -0
  537. package/components/shadcn/CalendarHeader.vue.cjs.map +1 -0
  538. package/components/shadcn/CalendarHeader.vue.js +5 -0
  539. package/components/shadcn/CalendarHeader.vue.js.map +1 -0
  540. package/components/shadcn/CalendarHeader.vue2.cjs +2 -0
  541. package/components/shadcn/CalendarHeader.vue2.cjs.map +1 -0
  542. package/components/shadcn/CalendarHeader.vue2.js +27 -0
  543. package/components/shadcn/CalendarHeader.vue2.js.map +1 -0
  544. package/components/shadcn/CalendarHeading.vue.cjs +2 -0
  545. package/components/shadcn/CalendarHeading.vue.cjs.map +1 -0
  546. package/components/shadcn/CalendarHeading.vue.js +5 -0
  547. package/components/shadcn/CalendarHeading.vue.js.map +1 -0
  548. package/components/shadcn/CalendarHeading.vue2.cjs +2 -0
  549. package/components/shadcn/CalendarHeading.vue2.cjs.map +1 -0
  550. package/components/shadcn/CalendarHeading.vue2.js +29 -0
  551. package/components/shadcn/CalendarHeading.vue2.js.map +1 -0
  552. package/components/shadcn/CalendarNextButton.vue.cjs +2 -0
  553. package/components/shadcn/CalendarNextButton.vue.cjs.map +1 -0
  554. package/components/shadcn/CalendarNextButton.vue.js +5 -0
  555. package/components/shadcn/CalendarNextButton.vue.js.map +1 -0
  556. package/components/shadcn/CalendarNextButton.vue2.cjs +2 -0
  557. package/components/shadcn/CalendarNextButton.vue2.cjs.map +1 -0
  558. package/components/shadcn/CalendarNextButton.vue2.js +36 -0
  559. package/components/shadcn/CalendarNextButton.vue2.js.map +1 -0
  560. package/components/shadcn/CalendarPrevButton.vue.cjs +2 -0
  561. package/components/shadcn/CalendarPrevButton.vue.cjs.map +1 -0
  562. package/components/shadcn/CalendarPrevButton.vue.js +5 -0
  563. package/components/shadcn/CalendarPrevButton.vue.js.map +1 -0
  564. package/components/shadcn/CalendarPrevButton.vue2.cjs +2 -0
  565. package/components/shadcn/CalendarPrevButton.vue2.cjs.map +1 -0
  566. package/components/shadcn/CalendarPrevButton.vue2.js +36 -0
  567. package/components/shadcn/CalendarPrevButton.vue2.js.map +1 -0
  568. package/components/shadcn/Card.vue.cjs +2 -0
  569. package/components/shadcn/Card.vue.cjs.map +1 -0
  570. package/components/shadcn/Card.vue.js +25 -0
  571. package/components/shadcn/Card.vue.js.map +1 -0
  572. package/components/shadcn/Card.vue2.cjs +2 -0
  573. package/components/shadcn/Card.vue2.cjs.map +1 -0
  574. package/components/shadcn/Card.vue2.js +5 -0
  575. package/components/shadcn/Card.vue2.js.map +1 -0
  576. package/components/shadcn/CardContent.vue.cjs +2 -0
  577. package/components/shadcn/CardContent.vue.cjs.map +1 -0
  578. package/components/shadcn/CardContent.vue.js +20 -0
  579. package/components/shadcn/CardContent.vue.js.map +1 -0
  580. package/components/shadcn/CardContent.vue2.cjs +2 -0
  581. package/components/shadcn/CardContent.vue2.cjs.map +1 -0
  582. package/components/shadcn/CardContent.vue2.js +5 -0
  583. package/components/shadcn/CardContent.vue2.js.map +1 -0
  584. package/components/shadcn/CardDescription.vue.cjs +2 -0
  585. package/components/shadcn/CardDescription.vue.cjs.map +1 -0
  586. package/components/shadcn/CardDescription.vue.js +20 -0
  587. package/components/shadcn/CardDescription.vue.js.map +1 -0
  588. package/components/shadcn/CardDescription.vue2.cjs +2 -0
  589. package/components/shadcn/CardDescription.vue2.cjs.map +1 -0
  590. package/components/shadcn/CardDescription.vue2.js +5 -0
  591. package/components/shadcn/CardDescription.vue2.js.map +1 -0
  592. package/components/shadcn/CardFooter.vue.cjs +2 -0
  593. package/components/shadcn/CardFooter.vue.cjs.map +1 -0
  594. package/components/shadcn/CardFooter.vue.js +20 -0
  595. package/components/shadcn/CardFooter.vue.js.map +1 -0
  596. package/components/shadcn/CardFooter.vue2.cjs +2 -0
  597. package/components/shadcn/CardFooter.vue2.cjs.map +1 -0
  598. package/components/shadcn/CardFooter.vue2.js +5 -0
  599. package/components/shadcn/CardFooter.vue2.js.map +1 -0
  600. package/components/shadcn/CardHeader.vue.cjs +2 -0
  601. package/components/shadcn/CardHeader.vue.cjs.map +1 -0
  602. package/components/shadcn/CardHeader.vue.js +20 -0
  603. package/components/shadcn/CardHeader.vue.js.map +1 -0
  604. package/components/shadcn/CardHeader.vue2.cjs +2 -0
  605. package/components/shadcn/CardHeader.vue2.cjs.map +1 -0
  606. package/components/shadcn/CardHeader.vue2.js +5 -0
  607. package/components/shadcn/CardHeader.vue2.js.map +1 -0
  608. package/components/shadcn/CardTitle.vue.cjs +2 -0
  609. package/components/shadcn/CardTitle.vue.cjs.map +1 -0
  610. package/components/shadcn/CardTitle.vue.js +22 -0
  611. package/components/shadcn/CardTitle.vue.js.map +1 -0
  612. package/components/shadcn/CardTitle.vue2.cjs +2 -0
  613. package/components/shadcn/CardTitle.vue2.cjs.map +1 -0
  614. package/components/shadcn/CardTitle.vue2.js +5 -0
  615. package/components/shadcn/CardTitle.vue2.js.map +1 -0
  616. package/components/shadcn/Checkbox.vue.cjs +2 -0
  617. package/components/shadcn/Checkbox.vue.cjs.map +1 -0
  618. package/components/shadcn/Checkbox.vue.js +46 -0
  619. package/components/shadcn/Checkbox.vue.js.map +1 -0
  620. package/components/shadcn/Checkbox.vue2.cjs +2 -0
  621. package/components/shadcn/Checkbox.vue2.cjs.map +1 -0
  622. package/components/shadcn/Checkbox.vue2.js +5 -0
  623. package/components/shadcn/Checkbox.vue2.js.map +1 -0
  624. package/components/shadcn/Combobox.vue.cjs +2 -0
  625. package/components/shadcn/Combobox.vue.cjs.map +1 -0
  626. package/components/shadcn/Combobox.vue.js +40 -0
  627. package/components/shadcn/Combobox.vue.js.map +1 -0
  628. package/components/shadcn/Combobox.vue2.cjs +2 -0
  629. package/components/shadcn/Combobox.vue2.cjs.map +1 -0
  630. package/components/shadcn/Combobox.vue2.js +5 -0
  631. package/components/shadcn/Combobox.vue2.js.map +1 -0
  632. package/components/shadcn/ComboboxAnchor.vue.cjs +2 -0
  633. package/components/shadcn/ComboboxAnchor.vue.cjs.map +1 -0
  634. package/components/shadcn/ComboboxAnchor.vue.js +28 -0
  635. package/components/shadcn/ComboboxAnchor.vue.js.map +1 -0
  636. package/components/shadcn/ComboboxAnchor.vue2.cjs +2 -0
  637. package/components/shadcn/ComboboxAnchor.vue2.cjs.map +1 -0
  638. package/components/shadcn/ComboboxAnchor.vue2.js +5 -0
  639. package/components/shadcn/ComboboxAnchor.vue2.js.map +1 -0
  640. package/components/shadcn/ComboboxEmpty.vue.cjs +2 -0
  641. package/components/shadcn/ComboboxEmpty.vue.cjs.map +1 -0
  642. package/components/shadcn/ComboboxEmpty.vue.js +27 -0
  643. package/components/shadcn/ComboboxEmpty.vue.js.map +1 -0
  644. package/components/shadcn/ComboboxEmpty.vue2.cjs +2 -0
  645. package/components/shadcn/ComboboxEmpty.vue2.cjs.map +1 -0
  646. package/components/shadcn/ComboboxEmpty.vue2.js +5 -0
  647. package/components/shadcn/ComboboxEmpty.vue2.js.map +1 -0
  648. package/components/shadcn/ComboboxGroup.vue.cjs +2 -0
  649. package/components/shadcn/ComboboxGroup.vue.cjs.map +1 -0
  650. package/components/shadcn/ComboboxGroup.vue.js +37 -0
  651. package/components/shadcn/ComboboxGroup.vue.js.map +1 -0
  652. package/components/shadcn/ComboboxGroup.vue2.cjs +2 -0
  653. package/components/shadcn/ComboboxGroup.vue2.cjs.map +1 -0
  654. package/components/shadcn/ComboboxGroup.vue2.js +5 -0
  655. package/components/shadcn/ComboboxGroup.vue2.js.map +1 -0
  656. package/components/shadcn/ComboboxInput.vue.cjs +2 -0
  657. package/components/shadcn/ComboboxInput.vue.cjs.map +1 -0
  658. package/components/shadcn/ComboboxInput.vue.js +32 -0
  659. package/components/shadcn/ComboboxInput.vue.js.map +1 -0
  660. package/components/shadcn/ComboboxInput.vue2.cjs +2 -0
  661. package/components/shadcn/ComboboxInput.vue2.cjs.map +1 -0
  662. package/components/shadcn/ComboboxInput.vue2.js +5 -0
  663. package/components/shadcn/ComboboxInput.vue2.js.map +1 -0
  664. package/components/shadcn/ComboboxItem.vue.cjs +2 -0
  665. package/components/shadcn/ComboboxItem.vue.cjs.map +1 -0
  666. package/components/shadcn/ComboboxItem.vue.js +31 -0
  667. package/components/shadcn/ComboboxItem.vue.js.map +1 -0
  668. package/components/shadcn/ComboboxItem.vue2.cjs +2 -0
  669. package/components/shadcn/ComboboxItem.vue2.cjs.map +1 -0
  670. package/components/shadcn/ComboboxItem.vue2.js +5 -0
  671. package/components/shadcn/ComboboxItem.vue2.js.map +1 -0
  672. package/components/shadcn/ComboboxList.vue.cjs +2 -0
  673. package/components/shadcn/ComboboxList.vue.cjs.map +1 -0
  674. package/components/shadcn/ComboboxList.vue.js +59 -0
  675. package/components/shadcn/ComboboxList.vue.js.map +1 -0
  676. package/components/shadcn/ComboboxList.vue2.cjs +2 -0
  677. package/components/shadcn/ComboboxList.vue2.cjs.map +1 -0
  678. package/components/shadcn/ComboboxList.vue2.js +5 -0
  679. package/components/shadcn/ComboboxList.vue2.js.map +1 -0
  680. package/components/shadcn/ComboboxTrigger.vue.cjs +2 -0
  681. package/components/shadcn/ComboboxTrigger.vue.cjs.map +1 -0
  682. package/components/shadcn/ComboboxTrigger.vue.js +29 -0
  683. package/components/shadcn/ComboboxTrigger.vue.js.map +1 -0
  684. package/components/shadcn/ComboboxTrigger.vue2.cjs +2 -0
  685. package/components/shadcn/ComboboxTrigger.vue2.cjs.map +1 -0
  686. package/components/shadcn/ComboboxTrigger.vue2.js +5 -0
  687. package/components/shadcn/ComboboxTrigger.vue2.js.map +1 -0
  688. package/components/shadcn/ContextMenu.vue.cjs +2 -0
  689. package/components/shadcn/ContextMenu.vue.cjs.map +1 -0
  690. package/components/shadcn/ContextMenu.vue.js +24 -0
  691. package/components/shadcn/ContextMenu.vue.js.map +1 -0
  692. package/components/shadcn/ContextMenu.vue2.cjs +2 -0
  693. package/components/shadcn/ContextMenu.vue2.cjs.map +1 -0
  694. package/components/shadcn/ContextMenu.vue2.js +5 -0
  695. package/components/shadcn/ContextMenu.vue2.js.map +1 -0
  696. package/components/shadcn/ContextMenuContent.vue.cjs +2 -0
  697. package/components/shadcn/ContextMenuContent.vue.cjs.map +1 -0
  698. package/components/shadcn/ContextMenuContent.vue.js +50 -0
  699. package/components/shadcn/ContextMenuContent.vue.js.map +1 -0
  700. package/components/shadcn/ContextMenuContent.vue2.cjs +2 -0
  701. package/components/shadcn/ContextMenuContent.vue2.cjs.map +1 -0
  702. package/components/shadcn/ContextMenuContent.vue2.js +5 -0
  703. package/components/shadcn/ContextMenuContent.vue2.js.map +1 -0
  704. package/components/shadcn/ContextMenuGroup.vue.cjs +2 -0
  705. package/components/shadcn/ContextMenuGroup.vue.cjs.map +1 -0
  706. package/components/shadcn/ContextMenuGroup.vue.js +22 -0
  707. package/components/shadcn/ContextMenuGroup.vue.js.map +1 -0
  708. package/components/shadcn/ContextMenuGroup.vue2.cjs +2 -0
  709. package/components/shadcn/ContextMenuGroup.vue2.cjs.map +1 -0
  710. package/components/shadcn/ContextMenuGroup.vue2.js +5 -0
  711. package/components/shadcn/ContextMenuGroup.vue2.js.map +1 -0
  712. package/components/shadcn/ContextMenuItem.vue.cjs +2 -0
  713. package/components/shadcn/ContextMenuItem.vue.cjs.map +1 -0
  714. package/components/shadcn/ContextMenuItem.vue.js +35 -0
  715. package/components/shadcn/ContextMenuItem.vue.js.map +1 -0
  716. package/components/shadcn/ContextMenuItem.vue2.cjs +2 -0
  717. package/components/shadcn/ContextMenuItem.vue2.cjs.map +1 -0
  718. package/components/shadcn/ContextMenuItem.vue2.js +5 -0
  719. package/components/shadcn/ContextMenuItem.vue2.js.map +1 -0
  720. package/components/shadcn/ContextMenuLabel.vue.cjs +2 -0
  721. package/components/shadcn/ContextMenuLabel.vue.cjs.map +1 -0
  722. package/components/shadcn/ContextMenuLabel.vue.js +32 -0
  723. package/components/shadcn/ContextMenuLabel.vue.js.map +1 -0
  724. package/components/shadcn/ContextMenuLabel.vue2.cjs +2 -0
  725. package/components/shadcn/ContextMenuLabel.vue2.cjs.map +1 -0
  726. package/components/shadcn/ContextMenuLabel.vue2.js +5 -0
  727. package/components/shadcn/ContextMenuLabel.vue2.js.map +1 -0
  728. package/components/shadcn/ContextMenuSeparator.vue.cjs +2 -0
  729. package/components/shadcn/ContextMenuSeparator.vue.cjs.map +1 -0
  730. package/components/shadcn/ContextMenuSeparator.vue.js +22 -0
  731. package/components/shadcn/ContextMenuSeparator.vue.js.map +1 -0
  732. package/components/shadcn/ContextMenuSeparator.vue2.cjs +2 -0
  733. package/components/shadcn/ContextMenuSeparator.vue2.cjs.map +1 -0
  734. package/components/shadcn/ContextMenuSeparator.vue2.js +5 -0
  735. package/components/shadcn/ContextMenuSeparator.vue2.js.map +1 -0
  736. package/components/shadcn/ContextMenuSub.vue.cjs +2 -0
  737. package/components/shadcn/ContextMenuSub.vue.cjs.map +1 -0
  738. package/components/shadcn/ContextMenuSub.vue.js +23 -0
  739. package/components/shadcn/ContextMenuSub.vue.js.map +1 -0
  740. package/components/shadcn/ContextMenuSub.vue2.cjs +2 -0
  741. package/components/shadcn/ContextMenuSub.vue2.cjs.map +1 -0
  742. package/components/shadcn/ContextMenuSub.vue2.js +5 -0
  743. package/components/shadcn/ContextMenuSub.vue2.js.map +1 -0
  744. package/components/shadcn/ContextMenuSubContent.vue.cjs +2 -0
  745. package/components/shadcn/ContextMenuSubContent.vue.cjs.map +1 -0
  746. package/components/shadcn/ContextMenuSubContent.vue.js +48 -0
  747. package/components/shadcn/ContextMenuSubContent.vue.js.map +1 -0
  748. package/components/shadcn/ContextMenuSubContent.vue2.cjs +2 -0
  749. package/components/shadcn/ContextMenuSubContent.vue2.cjs.map +1 -0
  750. package/components/shadcn/ContextMenuSubContent.vue2.js +5 -0
  751. package/components/shadcn/ContextMenuSubContent.vue2.js.map +1 -0
  752. package/components/shadcn/ContextMenuSubTrigger.vue.cjs +2 -0
  753. package/components/shadcn/ContextMenuSubTrigger.vue.cjs.map +1 -0
  754. package/components/shadcn/ContextMenuSubTrigger.vue.js +36 -0
  755. package/components/shadcn/ContextMenuSubTrigger.vue.js.map +1 -0
  756. package/components/shadcn/ContextMenuSubTrigger.vue2.cjs +2 -0
  757. package/components/shadcn/ContextMenuSubTrigger.vue2.cjs.map +1 -0
  758. package/components/shadcn/ContextMenuSubTrigger.vue2.js +5 -0
  759. package/components/shadcn/ContextMenuSubTrigger.vue2.js.map +1 -0
  760. package/components/shadcn/ContextMenuTrigger.vue.cjs +2 -0
  761. package/components/shadcn/ContextMenuTrigger.vue.cjs.map +1 -0
  762. package/components/shadcn/ContextMenuTrigger.vue.js +23 -0
  763. package/components/shadcn/ContextMenuTrigger.vue.js.map +1 -0
  764. package/components/shadcn/ContextMenuTrigger.vue2.cjs +2 -0
  765. package/components/shadcn/ContextMenuTrigger.vue2.cjs.map +1 -0
  766. package/components/shadcn/ContextMenuTrigger.vue2.js +5 -0
  767. package/components/shadcn/ContextMenuTrigger.vue2.js.map +1 -0
  768. package/components/shadcn/Dialog.vue.cjs +2 -0
  769. package/components/shadcn/Dialog.vue.cjs.map +1 -0
  770. package/components/shadcn/Dialog.vue.js +34 -0
  771. package/components/shadcn/Dialog.vue.js.map +1 -0
  772. package/components/shadcn/Dialog.vue2.cjs +2 -0
  773. package/components/shadcn/Dialog.vue2.cjs.map +1 -0
  774. package/components/shadcn/Dialog.vue2.js +5 -0
  775. package/components/shadcn/Dialog.vue2.js.map +1 -0
  776. package/components/shadcn/DialogBody.vue.cjs +2 -0
  777. package/components/shadcn/DialogBody.vue.cjs.map +1 -0
  778. package/components/shadcn/DialogBody.vue.js +19 -0
  779. package/components/shadcn/DialogBody.vue.js.map +1 -0
  780. package/components/shadcn/DialogBody.vue2.cjs +2 -0
  781. package/components/shadcn/DialogBody.vue2.cjs.map +1 -0
  782. package/components/shadcn/DialogBody.vue2.js +5 -0
  783. package/components/shadcn/DialogBody.vue2.js.map +1 -0
  784. package/components/shadcn/DialogContent.vue.cjs +2 -0
  785. package/components/shadcn/DialogContent.vue.cjs.map +1 -0
  786. package/components/shadcn/DialogContent.vue.js +19 -0
  787. package/components/shadcn/DialogContent.vue.js.map +1 -0
  788. package/components/shadcn/DialogContent.vue2.cjs +2 -0
  789. package/components/shadcn/DialogContent.vue2.cjs.map +1 -0
  790. package/components/shadcn/DialogContent.vue2.js +5 -0
  791. package/components/shadcn/DialogContent.vue2.js.map +1 -0
  792. package/components/shadcn/DialogFooter.vue.cjs +2 -0
  793. package/components/shadcn/DialogFooter.vue.cjs.map +1 -0
  794. package/components/shadcn/DialogFooter.vue.js +19 -0
  795. package/components/shadcn/DialogFooter.vue.js.map +1 -0
  796. package/components/shadcn/DialogFooter.vue2.cjs +2 -0
  797. package/components/shadcn/DialogFooter.vue2.cjs.map +1 -0
  798. package/components/shadcn/DialogFooter.vue2.js +5 -0
  799. package/components/shadcn/DialogFooter.vue2.js.map +1 -0
  800. package/components/shadcn/DialogHeader.vue.cjs +2 -0
  801. package/components/shadcn/DialogHeader.vue.cjs.map +1 -0
  802. package/components/shadcn/DialogHeader.vue.js +19 -0
  803. package/components/shadcn/DialogHeader.vue.js.map +1 -0
  804. package/components/shadcn/DialogHeader.vue2.cjs +2 -0
  805. package/components/shadcn/DialogHeader.vue2.cjs.map +1 -0
  806. package/components/shadcn/DialogHeader.vue2.js +5 -0
  807. package/components/shadcn/DialogHeader.vue2.js.map +1 -0
  808. package/components/shadcn/DialogTitle.vue.cjs +2 -0
  809. package/components/shadcn/DialogTitle.vue.cjs.map +1 -0
  810. package/components/shadcn/DialogTitle.vue.js +19 -0
  811. package/components/shadcn/DialogTitle.vue.js.map +1 -0
  812. package/components/shadcn/DialogTitle.vue2.cjs +2 -0
  813. package/components/shadcn/DialogTitle.vue2.cjs.map +1 -0
  814. package/components/shadcn/DialogTitle.vue2.js +5 -0
  815. package/components/shadcn/DialogTitle.vue2.js.map +1 -0
  816. package/components/shadcn/Field.vue.cjs +2 -0
  817. package/components/shadcn/Field.vue.cjs.map +1 -0
  818. package/components/shadcn/Field.vue.js +28 -0
  819. package/components/shadcn/Field.vue.js.map +1 -0
  820. package/components/shadcn/Field.vue2.cjs +2 -0
  821. package/components/shadcn/Field.vue2.cjs.map +1 -0
  822. package/components/shadcn/Field.vue2.js +5 -0
  823. package/components/shadcn/Field.vue2.js.map +1 -0
  824. package/components/shadcn/FieldContent.vue.cjs +2 -0
  825. package/components/shadcn/FieldContent.vue.cjs.map +1 -0
  826. package/components/shadcn/FieldContent.vue.js +24 -0
  827. package/components/shadcn/FieldContent.vue.js.map +1 -0
  828. package/components/shadcn/FieldContent.vue2.cjs +2 -0
  829. package/components/shadcn/FieldContent.vue2.cjs.map +1 -0
  830. package/components/shadcn/FieldContent.vue2.js +5 -0
  831. package/components/shadcn/FieldContent.vue2.js.map +1 -0
  832. package/components/shadcn/FieldDescription.vue.cjs +2 -0
  833. package/components/shadcn/FieldDescription.vue.cjs.map +1 -0
  834. package/components/shadcn/FieldDescription.vue.js +26 -0
  835. package/components/shadcn/FieldDescription.vue.js.map +1 -0
  836. package/components/shadcn/FieldDescription.vue2.cjs +2 -0
  837. package/components/shadcn/FieldDescription.vue2.cjs.map +1 -0
  838. package/components/shadcn/FieldDescription.vue2.js +5 -0
  839. package/components/shadcn/FieldDescription.vue2.js.map +1 -0
  840. package/components/shadcn/FieldError.vue.cjs +2 -0
  841. package/components/shadcn/FieldError.vue.cjs.map +1 -0
  842. package/components/shadcn/FieldError.vue.js +31 -0
  843. package/components/shadcn/FieldError.vue.js.map +1 -0
  844. package/components/shadcn/FieldError.vue2.cjs +2 -0
  845. package/components/shadcn/FieldError.vue2.cjs.map +1 -0
  846. package/components/shadcn/FieldError.vue2.js +5 -0
  847. package/components/shadcn/FieldError.vue2.js.map +1 -0
  848. package/components/shadcn/FieldGroup.vue.cjs +2 -0
  849. package/components/shadcn/FieldGroup.vue.cjs.map +1 -0
  850. package/components/shadcn/FieldGroup.vue.js +24 -0
  851. package/components/shadcn/FieldGroup.vue.js.map +1 -0
  852. package/components/shadcn/FieldGroup.vue2.cjs +2 -0
  853. package/components/shadcn/FieldGroup.vue2.cjs.map +1 -0
  854. package/components/shadcn/FieldGroup.vue2.js +5 -0
  855. package/components/shadcn/FieldGroup.vue2.js.map +1 -0
  856. package/components/shadcn/FieldLabel.vue.cjs +2 -0
  857. package/components/shadcn/FieldLabel.vue.cjs.map +1 -0
  858. package/components/shadcn/FieldLabel.vue.js +31 -0
  859. package/components/shadcn/FieldLabel.vue.js.map +1 -0
  860. package/components/shadcn/FieldLabel.vue2.cjs +2 -0
  861. package/components/shadcn/FieldLabel.vue2.cjs.map +1 -0
  862. package/components/shadcn/FieldLabel.vue2.js +5 -0
  863. package/components/shadcn/FieldLabel.vue2.js.map +1 -0
  864. package/components/shadcn/Input.vue.cjs +2 -0
  865. package/components/shadcn/Input.vue.cjs.map +1 -0
  866. package/components/shadcn/Input.vue.js +28 -0
  867. package/components/shadcn/Input.vue.js.map +1 -0
  868. package/components/shadcn/Input.vue2.cjs +2 -0
  869. package/components/shadcn/Input.vue2.cjs.map +1 -0
  870. package/components/shadcn/Input.vue2.js +5 -0
  871. package/components/shadcn/Input.vue2.js.map +1 -0
  872. package/components/shadcn/Kbd.vue.cjs +2 -0
  873. package/components/shadcn/Kbd.vue.cjs.map +1 -0
  874. package/components/shadcn/Kbd.vue.js +25 -0
  875. package/components/shadcn/Kbd.vue.js.map +1 -0
  876. package/components/shadcn/Kbd.vue2.cjs +2 -0
  877. package/components/shadcn/Kbd.vue2.cjs.map +1 -0
  878. package/components/shadcn/Kbd.vue2.js +5 -0
  879. package/components/shadcn/Kbd.vue2.js.map +1 -0
  880. package/components/shadcn/Label.vue.cjs +2 -0
  881. package/components/shadcn/Label.vue.cjs.map +1 -0
  882. package/components/shadcn/Label.vue.js +31 -0
  883. package/components/shadcn/Label.vue.js.map +1 -0
  884. package/components/shadcn/Label.vue2.cjs +2 -0
  885. package/components/shadcn/Label.vue2.cjs.map +1 -0
  886. package/components/shadcn/Label.vue2.js +5 -0
  887. package/components/shadcn/Label.vue2.js.map +1 -0
  888. package/components/shadcn/Popover.vue.cjs +2 -0
  889. package/components/shadcn/Popover.vue.cjs.map +1 -0
  890. package/components/shadcn/Popover.vue.js +24 -0
  891. package/components/shadcn/Popover.vue.js.map +1 -0
  892. package/components/shadcn/Popover.vue2.cjs +2 -0
  893. package/components/shadcn/Popover.vue2.cjs.map +1 -0
  894. package/components/shadcn/Popover.vue2.js +5 -0
  895. package/components/shadcn/Popover.vue2.js.map +1 -0
  896. package/components/shadcn/PopoverContent.vue.cjs +2 -0
  897. package/components/shadcn/PopoverContent.vue.cjs.map +1 -0
  898. package/components/shadcn/PopoverContent.vue.js +56 -0
  899. package/components/shadcn/PopoverContent.vue.js.map +1 -0
  900. package/components/shadcn/PopoverContent.vue2.cjs +2 -0
  901. package/components/shadcn/PopoverContent.vue2.cjs.map +1 -0
  902. package/components/shadcn/PopoverContent.vue2.js +5 -0
  903. package/components/shadcn/PopoverContent.vue2.js.map +1 -0
  904. package/components/shadcn/PopoverTrigger.vue.cjs +2 -0
  905. package/components/shadcn/PopoverTrigger.vue.cjs.map +1 -0
  906. package/components/shadcn/PopoverTrigger.vue.js +22 -0
  907. package/components/shadcn/PopoverTrigger.vue.js.map +1 -0
  908. package/components/shadcn/PopoverTrigger.vue2.cjs +2 -0
  909. package/components/shadcn/PopoverTrigger.vue2.cjs.map +1 -0
  910. package/components/shadcn/PopoverTrigger.vue2.js +5 -0
  911. package/components/shadcn/PopoverTrigger.vue2.js.map +1 -0
  912. package/components/shadcn/Progress.vue.cjs +2 -0
  913. package/components/shadcn/Progress.vue.cjs.map +1 -0
  914. package/components/shadcn/Progress.vue.js +37 -0
  915. package/components/shadcn/Progress.vue.js.map +1 -0
  916. package/components/shadcn/Progress.vue2.cjs +2 -0
  917. package/components/shadcn/Progress.vue2.cjs.map +1 -0
  918. package/components/shadcn/Progress.vue2.js +5 -0
  919. package/components/shadcn/Progress.vue2.js.map +1 -0
  920. package/components/shadcn/RadioGroup.vue.cjs +2 -0
  921. package/components/shadcn/RadioGroup.vue.cjs.map +1 -0
  922. package/components/shadcn/RadioGroup.vue.js +36 -0
  923. package/components/shadcn/RadioGroup.vue.js.map +1 -0
  924. package/components/shadcn/RadioGroup.vue2.cjs +2 -0
  925. package/components/shadcn/RadioGroup.vue2.cjs.map +1 -0
  926. package/components/shadcn/RadioGroup.vue2.js +5 -0
  927. package/components/shadcn/RadioGroup.vue2.js.map +1 -0
  928. package/components/shadcn/RadioGroupItem.vue.cjs +2 -0
  929. package/components/shadcn/RadioGroupItem.vue.cjs.map +1 -0
  930. package/components/shadcn/RadioGroupItem.vue.js +41 -0
  931. package/components/shadcn/RadioGroupItem.vue.js.map +1 -0
  932. package/components/shadcn/RadioGroupItem.vue2.cjs +2 -0
  933. package/components/shadcn/RadioGroupItem.vue2.cjs.map +1 -0
  934. package/components/shadcn/RadioGroupItem.vue2.js +5 -0
  935. package/components/shadcn/RadioGroupItem.vue2.js.map +1 -0
  936. package/components/shadcn/Select.vue.cjs +2 -0
  937. package/components/shadcn/Select.vue.cjs.map +1 -0
  938. package/components/shadcn/Select.vue.js +32 -0
  939. package/components/shadcn/Select.vue.js.map +1 -0
  940. package/components/shadcn/Select.vue2.cjs +2 -0
  941. package/components/shadcn/Select.vue2.cjs.map +1 -0
  942. package/components/shadcn/Select.vue2.js +5 -0
  943. package/components/shadcn/Select.vue2.js.map +1 -0
  944. package/components/shadcn/SelectContent.vue.cjs +2 -0
  945. package/components/shadcn/SelectContent.vue.cjs.map +1 -0
  946. package/components/shadcn/SelectContent.vue.js +69 -0
  947. package/components/shadcn/SelectContent.vue.js.map +1 -0
  948. package/components/shadcn/SelectContent.vue2.cjs +2 -0
  949. package/components/shadcn/SelectContent.vue2.cjs.map +1 -0
  950. package/components/shadcn/SelectContent.vue2.js +5 -0
  951. package/components/shadcn/SelectContent.vue2.js.map +1 -0
  952. package/components/shadcn/SelectGroup.vue.cjs +2 -0
  953. package/components/shadcn/SelectGroup.vue.cjs.map +1 -0
  954. package/components/shadcn/SelectGroup.vue.js +27 -0
  955. package/components/shadcn/SelectGroup.vue.js.map +1 -0
  956. package/components/shadcn/SelectGroup.vue2.cjs +2 -0
  957. package/components/shadcn/SelectGroup.vue2.cjs.map +1 -0
  958. package/components/shadcn/SelectGroup.vue2.js +5 -0
  959. package/components/shadcn/SelectGroup.vue2.js.map +1 -0
  960. package/components/shadcn/SelectItem.vue.cjs +2 -0
  961. package/components/shadcn/SelectItem.vue.cjs.map +1 -0
  962. package/components/shadcn/SelectItem.vue.js +47 -0
  963. package/components/shadcn/SelectItem.vue.js.map +1 -0
  964. package/components/shadcn/SelectItem.vue2.cjs +2 -0
  965. package/components/shadcn/SelectItem.vue2.cjs.map +1 -0
  966. package/components/shadcn/SelectItem.vue2.js +5 -0
  967. package/components/shadcn/SelectItem.vue2.js.map +1 -0
  968. package/components/shadcn/SelectLabel.vue.cjs +2 -0
  969. package/components/shadcn/SelectLabel.vue.cjs.map +1 -0
  970. package/components/shadcn/SelectLabel.vue.js +27 -0
  971. package/components/shadcn/SelectLabel.vue.js.map +1 -0
  972. package/components/shadcn/SelectLabel.vue2.cjs +2 -0
  973. package/components/shadcn/SelectLabel.vue2.cjs.map +1 -0
  974. package/components/shadcn/SelectLabel.vue2.js +5 -0
  975. package/components/shadcn/SelectLabel.vue2.js.map +1 -0
  976. package/components/shadcn/SelectScrollDownButton.vue.cjs +2 -0
  977. package/components/shadcn/SelectScrollDownButton.vue.cjs.map +1 -0
  978. package/components/shadcn/SelectScrollDownButton.vue.js +5 -0
  979. package/components/shadcn/SelectScrollDownButton.vue.js.map +1 -0
  980. package/components/shadcn/SelectScrollDownButton.vue2.cjs +2 -0
  981. package/components/shadcn/SelectScrollDownButton.vue2.cjs.map +1 -0
  982. package/components/shadcn/SelectScrollDownButton.vue2.js +30 -0
  983. package/components/shadcn/SelectScrollDownButton.vue2.js.map +1 -0
  984. package/components/shadcn/SelectScrollUpButton.vue.cjs +2 -0
  985. package/components/shadcn/SelectScrollUpButton.vue.cjs.map +1 -0
  986. package/components/shadcn/SelectScrollUpButton.vue.js +5 -0
  987. package/components/shadcn/SelectScrollUpButton.vue.js.map +1 -0
  988. package/components/shadcn/SelectScrollUpButton.vue2.cjs +2 -0
  989. package/components/shadcn/SelectScrollUpButton.vue2.cjs.map +1 -0
  990. package/components/shadcn/SelectScrollUpButton.vue2.js +30 -0
  991. package/components/shadcn/SelectScrollUpButton.vue2.js.map +1 -0
  992. package/components/shadcn/SelectTrigger.vue.cjs +2 -0
  993. package/components/shadcn/SelectTrigger.vue.cjs.map +1 -0
  994. package/components/shadcn/SelectTrigger.vue.js +39 -0
  995. package/components/shadcn/SelectTrigger.vue.js.map +1 -0
  996. package/components/shadcn/SelectTrigger.vue2.cjs +2 -0
  997. package/components/shadcn/SelectTrigger.vue2.cjs.map +1 -0
  998. package/components/shadcn/SelectTrigger.vue2.js +5 -0
  999. package/components/shadcn/SelectTrigger.vue2.js.map +1 -0
  1000. package/components/shadcn/SelectValue.vue.cjs +2 -0
  1001. package/components/shadcn/SelectValue.vue.cjs.map +1 -0
  1002. package/components/shadcn/SelectValue.vue.js +23 -0
  1003. package/components/shadcn/SelectValue.vue.js.map +1 -0
  1004. package/components/shadcn/SelectValue.vue2.cjs +2 -0
  1005. package/components/shadcn/SelectValue.vue2.cjs.map +1 -0
  1006. package/components/shadcn/SelectValue.vue2.js +5 -0
  1007. package/components/shadcn/SelectValue.vue2.js.map +1 -0
  1008. package/components/shadcn/Separator.vue.cjs +2 -0
  1009. package/components/shadcn/Separator.vue.cjs.map +1 -0
  1010. package/components/shadcn/Separator.vue.js +28 -0
  1011. package/components/shadcn/Separator.vue.js.map +1 -0
  1012. package/components/shadcn/Separator.vue2.cjs +2 -0
  1013. package/components/shadcn/Separator.vue2.cjs.map +1 -0
  1014. package/components/shadcn/Separator.vue2.js +5 -0
  1015. package/components/shadcn/Separator.vue2.js.map +1 -0
  1016. package/components/shadcn/Switch.vue.cjs +2 -0
  1017. package/components/shadcn/Switch.vue.cjs.map +1 -0
  1018. package/components/shadcn/Switch.vue.js +45 -0
  1019. package/components/shadcn/Switch.vue.js.map +1 -0
  1020. package/components/shadcn/Switch.vue2.cjs +2 -0
  1021. package/components/shadcn/Switch.vue2.cjs.map +1 -0
  1022. package/components/shadcn/Switch.vue2.js +5 -0
  1023. package/components/shadcn/Switch.vue2.js.map +1 -0
  1024. package/components/shadcn/Tabs.vue.cjs +2 -0
  1025. package/components/shadcn/Tabs.vue.cjs.map +1 -0
  1026. package/components/shadcn/Tabs.vue.js +34 -0
  1027. package/components/shadcn/Tabs.vue.js.map +1 -0
  1028. package/components/shadcn/Tabs.vue2.cjs +2 -0
  1029. package/components/shadcn/Tabs.vue2.cjs.map +1 -0
  1030. package/components/shadcn/Tabs.vue2.js +5 -0
  1031. package/components/shadcn/Tabs.vue2.js.map +1 -0
  1032. package/components/shadcn/TabsContent.vue.cjs +2 -0
  1033. package/components/shadcn/TabsContent.vue.cjs.map +1 -0
  1034. package/components/shadcn/TabsContent.vue.js +32 -0
  1035. package/components/shadcn/TabsContent.vue.js.map +1 -0
  1036. package/components/shadcn/TabsContent.vue2.cjs +2 -0
  1037. package/components/shadcn/TabsContent.vue2.cjs.map +1 -0
  1038. package/components/shadcn/TabsContent.vue2.js +5 -0
  1039. package/components/shadcn/TabsContent.vue2.js.map +1 -0
  1040. package/components/shadcn/TabsList.vue.cjs +2 -0
  1041. package/components/shadcn/TabsList.vue.cjs.map +1 -0
  1042. package/components/shadcn/TabsList.vue.js +31 -0
  1043. package/components/shadcn/TabsList.vue.js.map +1 -0
  1044. package/components/shadcn/TabsList.vue2.cjs +2 -0
  1045. package/components/shadcn/TabsList.vue2.cjs.map +1 -0
  1046. package/components/shadcn/TabsList.vue2.js +5 -0
  1047. package/components/shadcn/TabsList.vue2.js.map +1 -0
  1048. package/components/shadcn/TabsTrigger.vue.cjs +2 -0
  1049. package/components/shadcn/TabsTrigger.vue.cjs.map +1 -0
  1050. package/components/shadcn/TabsTrigger.vue.js +32 -0
  1051. package/components/shadcn/TabsTrigger.vue.js.map +1 -0
  1052. package/components/shadcn/TabsTrigger.vue2.cjs +2 -0
  1053. package/components/shadcn/TabsTrigger.vue2.cjs.map +1 -0
  1054. package/components/shadcn/TabsTrigger.vue2.js +5 -0
  1055. package/components/shadcn/TabsTrigger.vue2.js.map +1 -0
  1056. package/components/shadcn/Textarea.vue.cjs +2 -0
  1057. package/components/shadcn/Textarea.vue.cjs.map +1 -0
  1058. package/components/shadcn/Textarea.vue.js +28 -0
  1059. package/components/shadcn/Textarea.vue.js.map +1 -0
  1060. package/components/shadcn/Textarea.vue2.cjs +2 -0
  1061. package/components/shadcn/Textarea.vue2.cjs.map +1 -0
  1062. package/components/shadcn/Textarea.vue2.js +5 -0
  1063. package/components/shadcn/Textarea.vue2.js.map +1 -0
  1064. package/components/shadcn/Tooltip.vue.cjs +2 -0
  1065. package/components/shadcn/Tooltip.vue.cjs.map +1 -0
  1066. package/components/shadcn/Tooltip.vue.js +28 -0
  1067. package/components/shadcn/Tooltip.vue.js.map +1 -0
  1068. package/components/shadcn/Tooltip.vue2.cjs +2 -0
  1069. package/components/shadcn/Tooltip.vue2.cjs.map +1 -0
  1070. package/components/shadcn/Tooltip.vue2.js +5 -0
  1071. package/components/shadcn/Tooltip.vue2.js.map +1 -0
  1072. package/components/shadcn/TooltipContent.vue.cjs +2 -0
  1073. package/components/shadcn/TooltipContent.vue.cjs.map +1 -0
  1074. package/components/shadcn/TooltipContent.vue.js +48 -0
  1075. package/components/shadcn/TooltipContent.vue.js.map +1 -0
  1076. package/components/shadcn/TooltipContent.vue2.cjs +2 -0
  1077. package/components/shadcn/TooltipContent.vue2.cjs.map +1 -0
  1078. package/components/shadcn/TooltipContent.vue2.js +5 -0
  1079. package/components/shadcn/TooltipContent.vue2.js.map +1 -0
  1080. package/components/shadcn/TooltipProvider.vue.cjs +2 -0
  1081. package/components/shadcn/TooltipProvider.vue.cjs.map +1 -0
  1082. package/components/shadcn/TooltipProvider.vue.js +26 -0
  1083. package/components/shadcn/TooltipProvider.vue.js.map +1 -0
  1084. package/components/shadcn/TooltipProvider.vue2.cjs +2 -0
  1085. package/components/shadcn/TooltipProvider.vue2.cjs.map +1 -0
  1086. package/components/shadcn/TooltipProvider.vue2.js +5 -0
  1087. package/components/shadcn/TooltipProvider.vue2.js.map +1 -0
  1088. package/components/shadcn/TooltipTrigger.vue.cjs +2 -0
  1089. package/components/shadcn/TooltipTrigger.vue.cjs.map +1 -0
  1090. package/components/shadcn/TooltipTrigger.vue.js +23 -0
  1091. package/components/shadcn/TooltipTrigger.vue.js.map +1 -0
  1092. package/components/shadcn/TooltipTrigger.vue2.cjs +2 -0
  1093. package/components/shadcn/TooltipTrigger.vue2.cjs.map +1 -0
  1094. package/components/shadcn/TooltipTrigger.vue2.js +5 -0
  1095. package/components/shadcn/TooltipTrigger.vue2.js.map +1 -0
  1096. package/components/shadcn/alert-variants.cjs +2 -0
  1097. package/components/shadcn/alert-variants.cjs.map +1 -0
  1098. package/components/shadcn/alert-variants.js +19 -0
  1099. package/components/shadcn/alert-variants.js.map +1 -0
  1100. package/components/shadcn/avatar-variants.cjs +2 -0
  1101. package/components/shadcn/avatar-variants.cjs.map +1 -0
  1102. package/components/shadcn/avatar-variants.js +21 -0
  1103. package/components/shadcn/avatar-variants.js.map +1 -0
  1104. package/components/shadcn/badge-variants.cjs +2 -0
  1105. package/components/shadcn/badge-variants.cjs.map +1 -0
  1106. package/components/shadcn/badge-variants.js +21 -0
  1107. package/components/shadcn/badge-variants.js.map +1 -0
  1108. package/components/shadcn/button-group-variants.cjs +2 -0
  1109. package/components/shadcn/button-group-variants.cjs.map +1 -0
  1110. package/components/shadcn/button-group-variants.js +19 -0
  1111. package/components/shadcn/button-group-variants.js.map +1 -0
  1112. package/components/shadcn/index.cjs +2 -0
  1113. package/components/shadcn/index.cjs.map +1 -0
  1114. package/components/shadcn/index.js +40 -0
  1115. package/components/shadcn/index.js.map +1 -0
  1116. package/components/templates/JLayout.vue.cjs +2 -0
  1117. package/components/templates/JLayout.vue.cjs.map +1 -0
  1118. package/components/templates/JLayout.vue.js +46 -0
  1119. package/components/templates/JLayout.vue.js.map +1 -0
  1120. package/components/templates/JLayout.vue2.cjs +2 -0
  1121. package/components/templates/JLayout.vue2.cjs.map +1 -0
  1122. package/components/templates/JLayout.vue2.js +5 -0
  1123. package/components/templates/JLayout.vue2.js.map +1 -0
  1124. package/components/templates/JLayoutAdvanced.vue.cjs +2 -0
  1125. package/components/templates/JLayoutAdvanced.vue.cjs.map +1 -0
  1126. package/components/templates/JLayoutAdvanced.vue.js +146 -0
  1127. package/components/templates/JLayoutAdvanced.vue.js.map +1 -0
  1128. package/components/templates/JLayoutAdvanced.vue2.cjs +2 -0
  1129. package/components/templates/JLayoutAdvanced.vue2.cjs.map +1 -0
  1130. package/components/templates/JLayoutAdvanced.vue2.js +5 -0
  1131. package/components/templates/JLayoutAdvanced.vue2.js.map +1 -0
  1132. package/components/templates/JLayoutSimple.vue.cjs +2 -0
  1133. package/components/templates/JLayoutSimple.vue.cjs.map +1 -0
  1134. package/components/templates/JLayoutSimple.vue.js +65 -0
  1135. package/components/templates/JLayoutSimple.vue.js.map +1 -0
  1136. package/components/templates/JLayoutSimple.vue2.cjs +2 -0
  1137. package/components/templates/JLayoutSimple.vue2.cjs.map +1 -0
  1138. package/components/templates/JLayoutSimple.vue2.js +5 -0
  1139. package/components/templates/JLayoutSimple.vue2.js.map +1 -0
  1140. package/components.json +17 -0
  1141. package/index.cjs +4 -0
  1142. package/index.js +99 -0
  1143. package/lib/styleTypePreset.cjs +2 -0
  1144. package/lib/styleTypePreset.cjs.map +1 -0
  1145. package/lib/styleTypePreset.js +36 -0
  1146. package/lib/styleTypePreset.js.map +1 -0
  1147. package/lib/theme-utils.cjs +2 -0
  1148. package/lib/theme-utils.cjs.map +1 -0
  1149. package/lib/theme-utils.js +75 -0
  1150. package/lib/theme-utils.js.map +1 -0
  1151. package/lib/utils.cjs +2 -0
  1152. package/lib/utils.cjs.map +1 -0
  1153. package/lib/utils.js +15 -0
  1154. package/lib/utils.js.map +1 -0
  1155. package/package.json +96 -0
  1156. package/tailwind.config.js +80 -0
  1157. package/types/index.d.ts +2491 -0
@@ -0,0 +1,171 @@
1
+ import { defineComponent as O, ref as c, watch as S, onMounted as A, onUnmounted as P, createBlock as R, openBlock as p, Teleport as N, createVNode as j, Transition as z, withCtx as D, createElementBlock as g, createCommentVNode as v, createElementVNode as t, withModifiers as M, normalizeStyle as K, toDisplayString as V, normalizeClass as _, nextTick as b } from "vue";
2
+ const F = ["aria-label"], I = { class: "search-addr-header" }, U = { class: "search-addr-title" }, J = { class: "search-addr-body" }, q = {
3
+ key: 0,
4
+ class: "search-addr-loading"
5
+ }, H = /* @__PURE__ */ O({
6
+ __name: "JSearchAddr",
7
+ props: {
8
+ isOpen: { type: Boolean, default: !1 },
9
+ title: { default: "주소 검색" },
10
+ width: { default: "600px" },
11
+ height: { default: "600px" },
12
+ closeOnBackdrop: { type: Boolean, default: !0 },
13
+ closeOnEsc: { type: Boolean, default: !0 },
14
+ defaultLanguage: { default: "K" },
15
+ theme: { default: "default" },
16
+ autoComplete: { type: Boolean, default: !0 }
17
+ },
18
+ emits: ["close", "complete", "complete-raw", "search", "error"],
19
+ setup(n, { expose: k, emit: E }) {
20
+ const r = n, l = E, x = c(null), u = c(null), m = c(!1), i = c(!1), f = c(null), B = () => new Promise((e, o) => {
21
+ if (window.daum && window.daum.Postcode) {
22
+ m.value = !0, e();
23
+ return;
24
+ }
25
+ const s = document.getElementById("daum-postcode-script");
26
+ if (s) {
27
+ s.addEventListener("load", () => {
28
+ m.value = !0, e();
29
+ });
30
+ return;
31
+ }
32
+ const a = document.createElement("script");
33
+ a.id = "daum-postcode-script", a.src = "https://t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js", a.async = !0, a.onload = () => {
34
+ m.value = !0, e();
35
+ }, a.onerror = () => {
36
+ const w = new Error("Failed to load Daum Postcode script");
37
+ l("error", w), o(w);
38
+ }, document.head.appendChild(a);
39
+ }), T = (e) => {
40
+ let o = "", s = "";
41
+ return e.userLanguageType === "K" ? e.userSelectedType === "R" ? (o = e.roadAddress, e.bname !== "" && (s += e.bname), e.buildingName !== "" && (s += s !== "" ? ", " + e.buildingName : e.buildingName)) : o = e.jibunAddress : e.userSelectedType === "R" ? o = e.roadAddressEnglish : o = e.jibunAddressEnglish, {
42
+ zonecode: e.zonecode,
43
+ address: o,
44
+ addressDetail: s || void 0,
45
+ addressType: e.userSelectedType,
46
+ languageType: e.userLanguageType,
47
+ sido: e.sido,
48
+ sigungu: e.sigungu,
49
+ bname: e.bname
50
+ };
51
+ }, C = async () => {
52
+ if (!u.value) {
53
+ console.warn("postcodeLayerRef is not available");
54
+ return;
55
+ }
56
+ try {
57
+ i.value = !0, await B(), await b(), f.value = new window.daum.Postcode({
58
+ oncomplete: (e) => {
59
+ const o = T(e);
60
+ l("complete", o), l("complete-raw", e), d();
61
+ },
62
+ onclose: () => {
63
+ r.isOpen && d();
64
+ },
65
+ onsearch: () => {
66
+ l("search");
67
+ },
68
+ width: "100%",
69
+ height: "100%"
70
+ }), u.value && (f.value.embed(u.value), console.log("Daum Postcode embedded successfully")), i.value = !1;
71
+ } catch (e) {
72
+ i.value = !1, console.error("Failed to initialize Postcode:", e), l("error", e instanceof Error ? e : new Error("Unknown error"));
73
+ }
74
+ }, y = async () => {
75
+ document.body.style.overflow = "hidden", await b(), setTimeout(() => {
76
+ C();
77
+ }, 100);
78
+ }, d = () => {
79
+ document.body.style.overflow = "", l("close");
80
+ }, L = (e) => {
81
+ r.closeOnBackdrop && e.target === e.currentTarget && d();
82
+ }, h = (e) => {
83
+ r.closeOnEsc && e.key === "Escape" && r.isOpen && d();
84
+ };
85
+ return S(
86
+ () => r.isOpen,
87
+ (e) => {
88
+ e ? y() : document.body.style.overflow = "";
89
+ }
90
+ ), A(() => {
91
+ document.addEventListener("keydown", h), r.isOpen && y();
92
+ }), P(() => {
93
+ document.removeEventListener("keydown", h), document.body.style.overflow = "";
94
+ }), k({
95
+ close: d
96
+ }), (e, o) => (p(), R(N, { to: "body" }, [
97
+ j(z, { name: "modal-fade" }, {
98
+ default: D(() => [
99
+ n.isOpen ? (p(), g("div", {
100
+ key: 0,
101
+ ref_key: "modalRef",
102
+ ref: x,
103
+ class: "search-addr-overlay",
104
+ onClick: L,
105
+ role: "dialog",
106
+ "aria-modal": "true",
107
+ "aria-label": n.title
108
+ }, [
109
+ t("div", {
110
+ class: "search-addr-modal",
111
+ style: K({ width: n.width, height: n.height }),
112
+ onClick: o[0] || (o[0] = M(() => {
113
+ }, ["stop"]))
114
+ }, [
115
+ t("div", I, [
116
+ t("h2", U, V(n.title), 1),
117
+ t("button", {
118
+ type: "button",
119
+ class: "search-addr-close",
120
+ "aria-label": "닫기",
121
+ onClick: d
122
+ }, [...o[1] || (o[1] = [
123
+ t("svg", {
124
+ xmlns: "http://www.w3.org/2000/svg",
125
+ width: "24",
126
+ height: "24",
127
+ viewBox: "0 0 24 24",
128
+ fill: "none",
129
+ stroke: "currentColor",
130
+ "stroke-width": "2",
131
+ "stroke-linecap": "round",
132
+ "stroke-linejoin": "round"
133
+ }, [
134
+ t("line", {
135
+ x1: "18",
136
+ y1: "6",
137
+ x2: "6",
138
+ y2: "18"
139
+ }),
140
+ t("line", {
141
+ x1: "6",
142
+ y1: "6",
143
+ x2: "18",
144
+ y2: "18"
145
+ })
146
+ ], -1)
147
+ ])])
148
+ ]),
149
+ t("div", J, [
150
+ i.value ? (p(), g("div", q, [...o[2] || (o[2] = [
151
+ t("div", { class: "loading-spinner" }, null, -1),
152
+ t("p", null, "주소 검색을 불러오는 중...", -1)
153
+ ])])) : v("", !0),
154
+ t("div", {
155
+ ref_key: "postcodeLayerRef",
156
+ ref: u,
157
+ class: _(["postcode-layer", { "is-loading": i.value }])
158
+ }, null, 2)
159
+ ])
160
+ ], 4)
161
+ ], 8, F)) : v("", !0)
162
+ ]),
163
+ _: 1
164
+ })
165
+ ]));
166
+ }
167
+ });
168
+ export {
169
+ H as default
170
+ };
171
+ //# sourceMappingURL=JSearchAddr.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSearchAddr.vue2.js","sources":["../../../../src/components/molecules/JSearchAddr.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { ref, watch, onMounted, onUnmounted, nextTick } from 'vue'\r\nimport type { \r\n JSearchAddrProps, \r\n PostcodeData, \r\n AddressResult \r\n} from '@/types/search-addr.types'\r\n\r\n/**\r\n * JSearchAddr 컴포넌트\r\n * \r\n * Daum Postcode API를 활용한 주소 검색 컴포넌트입니다.\r\n * 모달 형태로 동작하며, 우편번호와 주소를 검색할 수 있습니다.\r\n * \r\n * @emits close - 모달 닫힘 요청\r\n * @emits complete - 주소 선택 완료 (간소화된 데이터)\r\n * @emits complete-raw - 주소 선택 완료 (원본 데이터)\r\n * @emits search - 검색 시작\r\n * @emits error - 에러 발생\r\n */\r\n\r\nconst props = withDefaults(defineProps<JSearchAddrProps>(), {\r\n isOpen: false,\r\n title: '주소 검색',\r\n width: '600px',\r\n height: '600px',\r\n closeOnBackdrop: true,\r\n closeOnEsc: true,\r\n defaultLanguage: 'K',\r\n theme: 'default',\r\n autoComplete: true\r\n})\r\n\r\nconst emit = defineEmits<{\r\n close: []\r\n complete: [result: AddressResult]\r\n 'complete-raw': [data: PostcodeData]\r\n search: []\r\n error: [error: Error]\r\n}>()\r\n\r\n// Refs\r\nconst modalRef = ref<HTMLElement | null>(null)\r\nconst postcodeLayerRef = ref<HTMLElement | null>(null)\r\nconst isScriptLoaded = ref(false)\r\nconst isLoading = ref(false)\r\nconst postcodeInstance = ref<any>(null)\r\n\r\n/**\r\n * Daum Postcode 스크립트 로드\r\n */\r\nconst loadPostcodeScript = (): Promise<void> => {\r\n return new Promise((resolve, reject) => {\r\n if (window.daum && window.daum.Postcode) {\r\n isScriptLoaded.value = true\r\n resolve()\r\n return\r\n }\r\n\r\n const existingScript = document.getElementById('daum-postcode-script')\r\n if (existingScript) {\r\n existingScript.addEventListener('load', () => {\r\n isScriptLoaded.value = true\r\n resolve()\r\n })\r\n return\r\n }\r\n\r\n const script = document.createElement('script')\r\n script.id = 'daum-postcode-script'\r\n script.src = 'https://t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js'\r\n script.async = true\r\n\r\n script.onload = () => {\r\n isScriptLoaded.value = true\r\n resolve()\r\n }\r\n\r\n script.onerror = () => {\r\n const error = new Error('Failed to load Daum Postcode script')\r\n emit('error', error)\r\n reject(error)\r\n }\r\n\r\n document.head.appendChild(script)\r\n })\r\n}\r\n\r\n/**\r\n * 주소 데이터 변환 (PostcodeData → AddressResult)\r\n */\r\nconst transformAddressData = (data: PostcodeData): AddressResult => {\r\n let mainAddr = ''\r\n let extraAddr = ''\r\n\r\n // 언어에 따라 주소 선택\r\n if (data.userLanguageType === 'K') {\r\n if (data.userSelectedType === 'R') {\r\n mainAddr = data.roadAddress\r\n \r\n // 건물명 등 추가 정보\r\n if (data.bname !== '') {\r\n extraAddr += data.bname\r\n }\r\n if (data.buildingName !== '') {\r\n extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName)\r\n }\r\n } else {\r\n mainAddr = data.jibunAddress\r\n }\r\n } else {\r\n if (data.userSelectedType === 'R') {\r\n mainAddr = data.roadAddressEnglish\r\n } else {\r\n mainAddr = data.jibunAddressEnglish\r\n }\r\n }\r\n\r\n return {\r\n zonecode: data.zonecode,\r\n address: mainAddr,\r\n addressDetail: extraAddr || undefined,\r\n addressType: data.userSelectedType,\r\n languageType: data.userLanguageType,\r\n sido: data.sido,\r\n sigungu: data.sigungu,\r\n bname: data.bname\r\n }\r\n}\r\n\r\n/**\r\n * Postcode 초기화 및 embed\r\n */\r\nconst initPostcode = async () => {\r\n if (!postcodeLayerRef.value) {\r\n console.warn('postcodeLayerRef is not available')\r\n return\r\n }\r\n\r\n try {\r\n isLoading.value = true\r\n\r\n // 스크립트 로드\r\n await loadPostcodeScript()\r\n\r\n // DOM 준비 대기\r\n await nextTick()\r\n\r\n // Postcode 인스턴스 생성 및 embed\r\n postcodeInstance.value = new window.daum.Postcode({\r\n oncomplete: (data: PostcodeData) => {\r\n const result = transformAddressData(data)\r\n emit('complete', result)\r\n emit('complete-raw', data)\r\n closeModal()\r\n },\r\n onclose: () => {\r\n // 사용자가 X 버튼으로 닫을 경우\r\n if (props.isOpen) {\r\n closeModal()\r\n }\r\n },\r\n onsearch: () => {\r\n emit('search')\r\n },\r\n width: '100%',\r\n height: '100%'\r\n })\r\n\r\n // 레이어에 embed\r\n if (postcodeLayerRef.value) {\r\n postcodeInstance.value.embed(postcodeLayerRef.value)\r\n console.log('Daum Postcode embedded successfully')\r\n }\r\n \r\n isLoading.value = false\r\n } catch (error) {\r\n isLoading.value = false\r\n console.error('Failed to initialize Postcode:', error)\r\n emit('error', error instanceof Error ? error : new Error('Unknown error'))\r\n }\r\n}\r\n\r\n/**\r\n * 모달 열기\r\n */\r\nconst openModal = async () => {\r\n // body 스크롤 잠금\r\n document.body.style.overflow = 'hidden'\r\n \r\n // DOM이 완전히 렌더링될 때까지 대기\r\n await nextTick()\r\n \r\n // 약간의 추가 지연 (모달 애니메이션 고려)\r\n setTimeout(() => {\r\n initPostcode()\r\n }, 100)\r\n}\r\n\r\n/**\r\n * 모달 닫기\r\n */\r\nconst closeModal = () => {\r\n // body 스크롤 복원\r\n document.body.style.overflow = ''\r\n \r\n emit('close')\r\n}\r\n\r\n/**\r\n * 배경 클릭 핸들러\r\n */\r\nconst handleBackdropClick = (event: MouseEvent) => {\r\n if (props.closeOnBackdrop && event.target === event.currentTarget) {\r\n closeModal()\r\n }\r\n}\r\n\r\n/**\r\n * ESC 키 핸들러\r\n */\r\nconst handleEscKey = (event: KeyboardEvent) => {\r\n if (props.closeOnEsc && event.key === 'Escape' && props.isOpen) {\r\n closeModal()\r\n }\r\n}\r\n\r\n// Watch isOpen\r\nwatch(\r\n () => props.isOpen,\r\n (newValue) => {\r\n if (newValue) {\r\n openModal()\r\n } else {\r\n document.body.style.overflow = ''\r\n }\r\n }\r\n)\r\n\r\n// Lifecycle\r\nonMounted(() => {\r\n document.addEventListener('keydown', handleEscKey)\r\n \r\n if (props.isOpen) {\r\n openModal()\r\n }\r\n})\r\n\r\nonUnmounted(() => {\r\n document.removeEventListener('keydown', handleEscKey)\r\n document.body.style.overflow = ''\r\n})\r\n\r\n// Expose\r\ndefineExpose({\r\n close: closeModal\r\n})\r\n</script>\r\n\r\n<template>\r\n <Teleport to=\"body\">\r\n <Transition name=\"modal-fade\">\r\n <div\r\n v-if=\"isOpen\"\r\n ref=\"modalRef\"\r\n class=\"search-addr-overlay\"\r\n @click=\"handleBackdropClick\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n :aria-label=\"title\"\r\n >\r\n <div\r\n class=\"search-addr-modal\"\r\n :style=\"{ width, height }\"\r\n @click.stop\r\n >\r\n <!-- Header -->\r\n <div class=\"search-addr-header\">\r\n <h2 class=\"search-addr-title\">{{ title }}</h2>\r\n <button\r\n type=\"button\"\r\n class=\"search-addr-close\"\r\n aria-label=\"닫기\"\r\n @click=\"closeModal\"\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <!-- Body -->\r\n <div class=\"search-addr-body\">\r\n <!-- 로딩 -->\r\n <div v-if=\"isLoading\" class=\"search-addr-loading\">\r\n <div class=\"loading-spinner\"></div>\r\n <p>주소 검색을 불러오는 중...</p>\r\n </div>\r\n\r\n <!-- Postcode Layer -->\r\n <div\r\n ref=\"postcodeLayerRef\"\r\n class=\"postcode-layer\"\r\n :class=\"{ 'is-loading': isLoading }\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n </Transition>\r\n </Teleport>\r\n</template>\r\n\r\n<style scoped>\r\n/* Overlay */\r\n.search-addr-overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 9999;\r\n padding: 20px;\r\n}\r\n\r\n/* Modal */\r\n.search-addr-modal {\r\n background: white;\r\n border-radius: 12px;\r\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1),\r\n 0 10px 10px -5px rgba(0, 0, 0, 0.04);\r\n display: flex;\r\n flex-direction: column;\r\n max-width: 90vw;\r\n max-height: 90vh;\r\n overflow: hidden;\r\n}\r\n\r\n/* Header */\r\n.search-addr-header {\r\n position: relative;\r\n padding: 20px 24px;\r\n border-bottom: 1px solid #e5e7eb;\r\n flex-shrink: 0;\r\n}\r\n\r\n.search-addr-title {\r\n margin: 0;\r\n font-size: 20px;\r\n font-weight: 600;\r\n color: #111827;\r\n padding-right: 40px;\r\n}\r\n\r\n.search-addr-close {\r\n position: absolute;\r\n top: 16px;\r\n right: 16px;\r\n width: 36px;\r\n height: 36px;\r\n padding: 0;\r\n background: none;\r\n border: none;\r\n border-radius: 6px;\r\n cursor: pointer;\r\n color: #6b7280;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: all 0.2s;\r\n}\r\n\r\n.search-addr-close:hover {\r\n background-color: #f3f4f6;\r\n color: #111827;\r\n}\r\n\r\n.search-addr-close:focus {\r\n outline: 2px solid #3b82f6;\r\n outline-offset: 2px;\r\n}\r\n\r\n.search-addr-close:active {\r\n background-color: #e5e7eb;\r\n}\r\n\r\n/* Body */\r\n.search-addr-body {\r\n flex: 1;\r\n min-height: 0;\r\n position: relative;\r\n}\r\n\r\n.postcode-layer {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n}\r\n\r\n.postcode-layer.is-loading {\r\n opacity: 0;\r\n pointer-events: none;\r\n}\r\n\r\n/* Loading */\r\n.search-addr-loading {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n background: #f9fafb;\r\n z-index: 10;\r\n}\r\n\r\n.loading-spinner {\r\n width: 40px;\r\n height: 40px;\r\n border: 4px solid #e5e7eb;\r\n border-top: 4px solid #3b82f6;\r\n border-radius: 50%;\r\n animation: spin 1s linear infinite;\r\n margin-bottom: 16px;\r\n}\r\n\r\n@keyframes spin {\r\n 0% { transform: rotate(0deg); }\r\n 100% { transform: rotate(360deg); }\r\n}\r\n\r\n.search-addr-loading p {\r\n margin: 0;\r\n font-size: 14px;\r\n color: #6b7280;\r\n}\r\n\r\n/* Animation */\r\n.modal-fade-enter-active,\r\n.modal-fade-leave-active {\r\n transition: opacity 0.3s ease;\r\n}\r\n\r\n.modal-fade-enter-active .search-addr-modal,\r\n.modal-fade-leave-active .search-addr-modal {\r\n transition: transform 0.3s ease, opacity 0.3s ease;\r\n}\r\n\r\n.modal-fade-enter-from,\r\n.modal-fade-leave-to {\r\n opacity: 0;\r\n}\r\n\r\n.modal-fade-enter-from .search-addr-modal,\r\n.modal-fade-leave-to .search-addr-modal {\r\n transform: scale(0.95);\r\n opacity: 0;\r\n}\r\n\r\n/* Responsive */\r\n@media (max-width: 768px) {\r\n .search-addr-overlay {\r\n padding: 0;\r\n }\r\n\r\n .search-addr-modal {\r\n width: 100vw !important;\r\n height: 100vh !important;\r\n max-width: 100vw;\r\n max-height: 100vh;\r\n border-radius: 0;\r\n }\r\n\r\n .search-addr-header {\r\n padding: 16px 20px;\r\n }\r\n\r\n .search-addr-title {\r\n font-size: 18px;\r\n }\r\n}\r\n\r\n/* Dark mode */\r\n@media (prefers-color-scheme: dark) {\r\n .search-addr-modal {\r\n background: #1f2937;\r\n }\r\n\r\n .search-addr-header {\r\n border-color: #374151;\r\n }\r\n\r\n .search-addr-title {\r\n color: #f9fafb;\r\n }\r\n\r\n .search-addr-close {\r\n color: #9ca3af;\r\n }\r\n\r\n .search-addr-close:hover {\r\n background-color: #374151;\r\n color: #f9fafb;\r\n }\r\n\r\n .search-addr-loading {\r\n background: #111827;\r\n }\r\n\r\n .search-addr-loading p {\r\n color: #9ca3af;\r\n }\r\n}\r\n</style>\r\n\r\n"],"names":["props","__props","emit","__emit","modalRef","ref","postcodeLayerRef","isScriptLoaded","isLoading","postcodeInstance","loadPostcodeScript","resolve","reject","existingScript","script","error","transformAddressData","data","mainAddr","extraAddr","initPostcode","nextTick","result","closeModal","openModal","handleBackdropClick","event","handleEscKey","watch","newValue","onMounted","onUnmounted","__expose","_createBlock","_Teleport","_createVNode","_Transition","_createElementBlock","_createElementVNode","_normalizeStyle","_hoisted_2","_hoisted_3","_toDisplayString","_hoisted_4","_openBlock","_hoisted_5","_cache","_normalizeClass"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./JTabs.vue2.cjs");;/* empty css */const t = (t_comp, t_opts) => {
2
+ const t_merged = t_comp.__vccOpts || t_comp;
3
+ for (const [t_key, t_val] of t_opts)
4
+ t_merged[t_key] = t_val;
5
+ return t_merged;
6
+ };,u=t(e.default,[["__scopeId","data-v-0b269232"]]);exports.default=u;
7
+ //# sourceMappingURL=JTabs.vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JTabs.vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import o from "./JTabs.vue2.js";
2
+ /* empty css */
3
+ const t = (t_comp, t_opts) => {
4
+ const t_merged = t_comp.__vccOpts || t_comp;
5
+ for (const [t_key, t_val] of t_opts)
6
+ t_merged[t_key] = t_val;
7
+ return t_merged;
8
+ };
9
+ const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-0b269232"]]);
10
+ export {
11
+ p as default
12
+ };
13
+ //# sourceMappingURL=JTabs.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JTabs.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("../shadcn/index.cjs");const k=require("lucide-vue-next"),h=require("../../lib/utils.cjs"),x=require("../atoms/JIcon.vue.cjs"),y=require("../shadcn/Tabs.vue.cjs"),T=require("../shadcn/TabsList.vue.cjs"),b=require("../shadcn/TabsTrigger.vue.cjs"),B=require("../shadcn/TabsContent.vue.cjs"),N={class:"flex-1 truncate"},S=["aria-label","onClick"],E={class:"flex-1 w-full overflow-auto"},P={key:1,class:"p-4"},q={class:"text-muted-foreground"},V=e.defineComponent({__name:"JTabs",props:{tabs:{},activeTabId:{},className:{},listClassName:{},styletype:{default:"default"}},emits:["tabChange","tabClose","update:activeTabId"],setup(p,{emit:f}){const a=p,r=f,c=e.computed(()=>Array.isArray(a.tabs)?a.tabs:[]),s=e.ref(a.activeTabId||(c.value.length>0?c.value[0]?.id:"")||"");let o=!1;e.watch(()=>a.activeTabId,t=>{t!==void 0&&t!==s.value&&(s.value=t)},{immediate:!0}),e.watch(c,t=>{!a.activeTabId&&t.length>0&&!t.find(n=>n.id===s.value)&&t[0]&&(s.value=t[0].id)});const v=t=>{if(o)return;const n=String(t);n!==s.value&&(o=!0,s.value=n,r("update:activeTabId",n),r("tabChange",n),e.nextTick(()=>{o=!1}))},_=t=>{o||t===s.value||(o=!0,s.value=t,r("update:activeTabId",t),r("tabChange",t),e.nextTick(()=>{o=!1}))},m=(t,n)=>{t.stopPropagation(),r("tabClose",n)},C=e.computed(()=>{const t=["flex","flex-col","w-full","h-full"];return a.className&&t.push(a.className),t.join(" ")}),i={default:{tabPaddingClass:"px-3 py-2",tabTextSizeClass:"text-sm",listPaddingClass:"p-2"},minimal:{tabPaddingClass:"px-2 py-1",tabTextSizeClass:"text-xs",listPaddingClass:"p-1"}},u=e.computed(()=>i[a.styletype]??i.default),g=e.computed(()=>{const t=["w-full","justify-start",u.value.listPaddingClass];return a.listClassName&&t.push(a.listClassName),t.join(" ")});return(t,n)=>(e.openBlock(),e.createBlock(e.unref(y.default),{"model-value":s.value,"onUpdate:modelValue":v,orientation:"horizontal",class:e.normalizeClass(C.value)},{default:e.withCtx(()=>[e.createVNode(e.unref(T.default),{class:e.normalizeClass(g.value)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,l=>(e.openBlock(),e.createBlock(e.unref(b.default),{key:l.id,value:l.id,onClick:d=>_(l.id),class:e.normalizeClass(e.unref(h.cn)("!flex !items-center !gap-2",u.value.tabPaddingClass,u.value.tabTextSizeClass))},{default:e.withCtx(()=>[l.icon?(e.openBlock(),e.createBlock(x.default,{key:0,name:l.icon,size:"sm",class:"flex-shrink-0"},null,8,["name"])):e.createCommentVNode("",!0),e.createElementVNode("span",N,e.toDisplayString(l.label),1),l.closable?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"flex-shrink-0 h-4 w-4 rounded-sm hover:bg-destructive/10 hover:text-destructive transition-colors focus:outline-none focus:ring-2 focus:ring-ring flex items-center justify-center","aria-label":`${l.label} 탭 닫기`,onClick:d=>m(d,l.id)},[e.createVNode(e.unref(k.X),{class:"h-3 w-3"})],8,S)):e.createCommentVNode("",!0)]),_:2},1032,["value","onClick","class"]))),128))]),_:1},8,["class"]),e.createElementVNode("div",E,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,l=>(e.openBlock(),e.createBlock(e.unref(B.default),{key:`content-${l.id}`,value:l.id,class:"h-full mt-0 data-[state=active]:flex data-[state=active]:flex-col"},{default:e.withCtx(()=>[e.renderSlot(t.$slots,`content-${l.id}`,{tab:l},()=>[l.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.component),e.mergeProps({key:0,ref_for:!0},l.props||{}),null,16)):(e.openBlock(),e.createElementBlock("div",P,[e.createElementVNode("p",q,e.toDisplayString(l.label)+" 콘텐츠",1)]))],!0)]),_:2},1032,["value"]))),128))])]),_:3},8,["model-value","class"]))}});exports.default=V;
2
+ //# sourceMappingURL=JTabs.vue2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JTabs.vue2.cjs","sources":["../../../../src/components/molecules/JTabs.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, ref, watch, nextTick } from 'vue'\r\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from '@/components/shadcn'\r\nimport type { JTabsProps, JTabsEmits } from '@/types/dynamic-tabs.types'\r\nimport { X } from 'lucide-vue-next'\r\nimport { cn } from '@/lib/utils'\r\nimport JIcon from '@/components/atoms/JIcon.vue'\r\n\r\n/**\r\n * JTabs - 기본 탭 UI 컴포넌트 (molecules)\r\n * Basic Tabs UI Component\r\n * \r\n * @description\r\n * 정적인 탭 목록을 렌더링하는 기본 탭 컴포넌트입니다.\r\n * 닫기 버튼, 아이콘 등을 지원합니다.\r\n * \r\n * @example\r\n * ```vue\r\n * <JTabs \r\n * :tabs=\"tabs\"\r\n * :active-tab-id=\"activeId\"\r\n * @tab-change=\"handleChange\"\r\n * @tab-close=\"handleClose\"\r\n * />\r\n * ```\r\n */\r\n\r\ntype StyleType = 'default' | 'minimal'\r\n\r\nconst props = withDefaults(defineProps<JTabsProps>(), {\r\n styletype: 'default',\r\n})\r\n\r\nconst emit = defineEmits<JTabsEmits>()\r\n\r\n/**\r\n * 안전한 tabs 배열 (undefined/null 체크)\r\n * Safe tabs array (undefined/null check)\r\n */\r\nconst safeTabs = computed(() => {\r\n return Array.isArray(props.tabs) ? props.tabs : []\r\n})\r\n\r\n/**\r\n * 현재 활성화된 탭 ID (내부 상태)\r\n * Current active tab ID (internal state)\r\n */\r\nconst internalActiveId = ref<string>(\r\n props.activeTabId || (safeTabs.value.length > 0 ? safeTabs.value[0]?.id : '') || ''\r\n)\r\n\r\n/**\r\n * 이벤트 처리 중 플래그 (중복 이벤트 방지)\r\n * Flag to prevent duplicate events\r\n */\r\nlet isHandlingEvent = false\r\n\r\n/**\r\n * props.activeTabId가 변경되면 내부 상태 동기화\r\n * Sync internal state when props.activeTabId changes\r\n */\r\nwatch(() => props.activeTabId, (newValue) => {\r\n if (newValue !== undefined && newValue !== internalActiveId.value) {\r\n internalActiveId.value = newValue\r\n }\r\n}, { immediate: true })\r\n\r\n/**\r\n * props.tabs가 변경되고 activeTabId가 없으면 첫 번째 탭 활성화\r\n * Activate first tab when tabs change and no activeTabId\r\n */\r\nwatch(safeTabs, (newTabs) => {\r\n if (!props.activeTabId && newTabs.length > 0 && !newTabs.find(t => t.id === internalActiveId.value) && newTabs[0]) {\r\n internalActiveId.value = newTabs[0].id\r\n }\r\n})\r\n\r\n/**\r\n * 탭 값 변경 핸들러 (reka-ui TabsRoot에서 직접 호출됨)\r\n * Tab value change handler (called directly from reka-ui TabsRoot)\r\n */\r\nconst handleTabValueChange = (value: string | number) => {\r\n if (isHandlingEvent) return\r\n \r\n const stringValue = String(value)\r\n if (stringValue !== internalActiveId.value) {\r\n isHandlingEvent = true\r\n internalActiveId.value = stringValue\r\n emit('update:activeTabId', stringValue)\r\n emit('tabChange', stringValue)\r\n // 다음 tick에서 플래그 리셋\r\n nextTick(() => {\r\n isHandlingEvent = false\r\n })\r\n }\r\n}\r\n\r\n/**\r\n * 탭 클릭 핸들러 (백업 방안 - reka-ui 이벤트가 작동하지 않을 경우)\r\n * Tab click handler (backup - in case reka-ui events don't work)\r\n */\r\nconst handleTabClick = (tabId: string) => {\r\n // reka-ui 이벤트가 작동하지 않을 경우 직접 처리\r\n // handleTabValueChange가 이미 처리했으면 중복 방지\r\n if (isHandlingEvent || tabId === internalActiveId.value) return\r\n \r\n isHandlingEvent = true\r\n internalActiveId.value = tabId\r\n emit('update:activeTabId', tabId)\r\n emit('tabChange', tabId)\r\n // 다음 tick에서 플래그 리셋\r\n nextTick(() => {\r\n isHandlingEvent = false\r\n })\r\n}\r\n\r\n/**\r\n * 탭 닫기 핸들러\r\n * Tab close handler\r\n */\r\nconst handleCloseTab = (e: Event, tabId: string) => {\r\n e.stopPropagation() // 탭 클릭 이벤트 전파 방지\r\n emit('tabClose', tabId)\r\n}\r\n\r\n/**\r\n * 루트 클래스\r\n * Root classes\r\n */\r\nconst rootClasses = computed(() => {\r\n const classes = ['flex', 'flex-col', 'w-full', 'h-full']\r\n \r\n if (props.className) {\r\n classes.push(props.className)\r\n }\r\n \r\n return classes.join(' ')\r\n})\r\n\r\n/**\r\n * 스타일 프리셋\r\n */\r\nconst STYLE_PRESETS: Record<StyleType, {\r\n tabPaddingClass: string\r\n tabTextSizeClass: string\r\n listPaddingClass: string\r\n}> = {\r\n default: {\r\n tabPaddingClass: 'px-3 py-2',\r\n tabTextSizeClass: 'text-sm',\r\n listPaddingClass: 'p-2',\r\n },\r\n minimal: {\r\n tabPaddingClass: 'px-2 py-1',\r\n tabTextSizeClass: 'text-xs',\r\n listPaddingClass: 'p-1',\r\n },\r\n}\r\n\r\nconst preset = computed(() => {\r\n return STYLE_PRESETS[props.styletype] ?? STYLE_PRESETS.default\r\n})\r\n\r\n/**\r\n * 탭 리스트 클래스\r\n * Tabs list classes\r\n */\r\nconst listClasses = computed(() => {\r\n const classes = ['w-full', 'justify-start', preset.value.listPaddingClass]\r\n \r\n if (props.listClassName) {\r\n classes.push(props.listClassName)\r\n }\r\n \r\n return classes.join(' ')\r\n})\r\n</script>\r\n\r\n<template>\r\n <Tabs\r\n :model-value=\"internalActiveId\"\r\n @update:model-value=\"handleTabValueChange\"\r\n orientation=\"horizontal\"\r\n :class=\"rootClasses\"\r\n >\r\n <!-- 탭 헤더 영역 / Tab Headers -->\r\n <TabsList :class=\"listClasses\">\r\n <TabsTrigger\r\n v-for=\"tab in safeTabs\"\r\n :key=\"tab.id\"\r\n :value=\"tab.id\"\r\n @click=\"handleTabClick(tab.id)\"\r\n :class=\"cn('!flex !items-center !gap-2', preset.tabPaddingClass, preset.tabTextSizeClass)\"\r\n >\r\n <!-- 탭 아이콘 (있을 경우) / Tab Icon -->\r\n <JIcon \r\n v-if=\"tab.icon\" \r\n :name=\"tab.icon\" \r\n size=\"sm\"\r\n class=\"flex-shrink-0\"\r\n />\r\n \r\n <!-- 탭 레이블 / Tab Label -->\r\n <span class=\"flex-1 truncate\">{{ tab.label }}</span>\r\n \r\n <!-- 닫기 버튼 / Close Button (항상 표시) -->\r\n <button\r\n v-if=\"tab.closable\"\r\n type=\"button\"\r\n class=\"flex-shrink-0 h-4 w-4 rounded-sm hover:bg-destructive/10 hover:text-destructive transition-colors focus:outline-none focus:ring-2 focus:ring-ring flex items-center justify-center\"\r\n :aria-label=\"`${tab.label} 탭 닫기`\"\r\n @click=\"(e) => handleCloseTab(e, tab.id)\"\r\n >\r\n <X class=\"h-3 w-3\" />\r\n </button>\r\n </TabsTrigger>\r\n </TabsList>\r\n\r\n <!-- 탭 콘텐츠 영역 / Tab Contents -->\r\n <div class=\"flex-1 w-full overflow-auto\">\r\n <TabsContent\r\n v-for=\"tab in safeTabs\"\r\n :key=\"`content-${tab.id}`\"\r\n :value=\"tab.id\"\r\n class=\"h-full mt-0 data-[state=active]:flex data-[state=active]:flex-col\"\r\n >\r\n <!-- 슬롯 우선 / Slot First -->\r\n <slot :name=\"`content-${tab.id}`\" :tab=\"tab\">\r\n <!-- 동적 컴포넌트 렌더링 / Dynamic Component Rendering -->\r\n <component\r\n v-if=\"tab.component\"\r\n :is=\"tab.component\"\r\n v-bind=\"tab.props || {}\"\r\n />\r\n \r\n <!-- 기본 콘텐츠 / Default Content -->\r\n <div v-else class=\"p-4\">\r\n <p class=\"text-muted-foreground\">{{ tab.label }} 콘텐츠</p>\r\n </div>\r\n </slot>\r\n </TabsContent>\r\n </div>\r\n </Tabs>\r\n</template>\r\n\r\n<style scoped>\r\n/**\r\n * 탭 리스트 스타일 - 하단 보더 제거\r\n * Tab list styles without bottom border\r\n */\r\n:deep([role=\"tablist\"]) {\r\n overflow-x: auto;\r\n overflow-y: hidden;\r\n scrollbar-width: thin;\r\n scrollbar-color: rgba(0, 0, 0, 0.2) transparent;\r\n background: hsl(var(--background));\r\n padding: 0 0.5rem;\r\n padding-top: 0.5rem;\r\n gap: 0.25rem;\r\n border-bottom: none;\r\n}\r\n\r\n:deep([role=\"tablist\"]::-webkit-scrollbar) {\r\n height: 6px;\r\n}\r\n\r\n:deep([role=\"tablist\"]::-webkit-scrollbar-track) {\r\n background: transparent;\r\n}\r\n\r\n:deep([role=\"tablist\"]::-webkit-scrollbar-thumb) {\r\n background-color: rgba(0, 0, 0, 0.2);\r\n border-radius: 3px;\r\n}\r\n\r\n:deep([role=\"tablist\"]::-webkit-scrollbar-thumb:hover) {\r\n background-color: rgba(0, 0, 0, 0.3);\r\n}\r\n\r\n/**\r\n * 다크모드에서 스크롤바 스타일\r\n * Scrollbar styles in dark mode\r\n */\r\n.dark :deep([role=\"tablist\"]::-webkit-scrollbar-thumb) {\r\n background-color: rgba(255, 255, 255, 0.2);\r\n}\r\n\r\n.dark :deep([role=\"tablist\"]::-webkit-scrollbar-thumb:hover) {\r\n background-color: rgba(255, 255, 255, 0.3);\r\n}\r\n\r\n.dark :deep([role=\"tablist\"]) {\r\n scrollbar-color: rgba(255, 255, 255, 0.2) transparent;\r\n}\r\n\r\n/**\r\n * 탭 버튼 스타일 - 명확한 구분\r\n * Tab button styles - clear distinction\r\n */\r\n:deep([role=\"tab\"]) {\r\n position: relative;\r\n padding: 0.625rem 1rem;\r\n border-radius: 0.375rem 0.375rem 0 0;\r\n transition: all 0.2s ease;\r\n border: 1px solid transparent;\r\n border-bottom: none;\r\n}\r\n\r\n/**\r\n * Minimal 스타일 탭 버튼 - JSidebarAdvanced와 높이 맞춤\r\n */\r\n:deep([role=\"tablist\"][class*=\"p-1\"] [role=\"tab\"]) {\r\n padding: 0.625rem 0.5rem;\r\n}\r\n\r\n/**\r\n * 비활성 탭 - 명확하게 구분\r\n * Inactive tabs - clear distinction\r\n */\r\n:deep([role=\"tab\"][data-state=\"inactive\"]) {\r\n background: hsl(var(--muted) / 0.2);\r\n color: hsl(var(--muted-foreground));\r\n border-top: 1px solid hsl(var(--border) / 0.4);\r\n border-left: 1px solid hsl(var(--border) / 0.4);\r\n border-right: 1px solid hsl(var(--border) / 0.4);\r\n}\r\n\r\n:deep([role=\"tab\"][data-state=\"inactive\"]:hover) {\r\n background: hsl(var(--muted) / 0.4);\r\n color: hsl(var(--foreground));\r\n}\r\n\r\n/**\r\n * 다크모드에서 비활성 탭 - 다크 배경색 사용\r\n * Inactive tabs in dark mode - use dark background\r\n */\r\n.dark :deep([role=\"tab\"][data-state=\"inactive\"]) {\r\n background: hsl(var(--secondary));\r\n color: hsl(var(--secondary-foreground));\r\n border-top: 1px solid hsl(var(--border) / 0.5);\r\n border-left: 1px solid hsl(var(--border) / 0.5);\r\n border-right: 1px solid hsl(var(--border) / 0.5);\r\n}\r\n\r\n.dark :deep([role=\"tab\"][data-state=\"inactive\"]:hover) {\r\n background: hsl(var(--muted));\r\n color: hsl(var(--muted-foreground));\r\n}\r\n\r\n/**\r\n * 활성 탭 - 강조된 스타일\r\n * Active tab - emphasized style\r\n */\r\n:deep([role=\"tab\"][data-state=\"active\"]) {\r\n background: hsl(var(--background));\r\n color: hsl(var(--foreground));\r\n font-weight: 500;\r\n border-top: 2px solid hsl(var(--primary));\r\n border-left: 1px solid hsl(var(--border));\r\n border-right: 1px solid hsl(var(--border));\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\r\n z-index: 1;\r\n}\r\n\r\n/**\r\n * 다크모드에서 활성 탭 - 배경색 명확히 구분\r\n * Active tab in dark mode - clear background distinction\r\n */\r\n.dark :deep([role=\"tab\"][data-state=\"active\"]) {\r\n background: hsl(var(--card));\r\n color: hsl(var(--card-foreground));\r\n border-top: 2px solid hsl(var(--primary));\r\n border-left: 1px solid hsl(var(--border));\r\n border-right: 1px solid hsl(var(--border));\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\r\n}\r\n\r\n/**\r\n * 콘텐츠 영역에 상단 보더 추가\r\n * Add top border to content area\r\n */\r\n:deep([role=\"tabpanel\"]) {\r\n border-top: 1px solid hsl(var(--border));\r\n}\r\n\r\n/**\r\n * 다크모드에서 콘텐츠 영역 보더 - 더 부드러운 구분\r\n * Content area border in dark mode - subtler separation\r\n */\r\n.dark :deep([role=\"tabpanel\"]) {\r\n border-top: 1px solid hsl(var(--border) / 0.6);\r\n}\r\n</style>\r\n\r\n"],"names":["props","__props","emit","__emit","safeTabs","computed","internalActiveId","ref","isHandlingEvent","watch","newValue","newTabs","t","handleTabValueChange","value","stringValue","nextTick","handleTabClick","tabId","handleCloseTab","e","rootClasses","classes","STYLE_PRESETS","preset","listClasses","_createBlock","_unref","Tabs","_createVNode","TabsList","_createElementBlock","_Fragment","_renderList","tab","TabsTrigger","$event","_normalizeClass","JIcon","_createElementVNode","_hoisted_1","_toDisplayString","X","_hoisted_3","TabsContent","_renderSlot","_ctx","_openBlock","_resolveDynamicComponent","_mergeProps","_hoisted_4","_hoisted_5"],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import { defineComponent as V, computed as d, ref as w, watch as g, createBlock as u, openBlock as n, unref as o, normalizeClass as v, withCtx as f, createVNode as x, createElementVNode as C, createElementBlock as m, Fragment as y, renderList as k, createCommentVNode as T, toDisplayString as b, renderSlot as A, resolveDynamicComponent as B, mergeProps as D, nextTick as $ } from "vue";
2
+ import "../shadcn/index.js";
3
+ import { X as L } from "lucide-vue-next";
4
+ import { cn as F } from "../../lib/utils.js";
5
+ import H from "../atoms/JIcon.vue.js";
6
+ import J from "../shadcn/Tabs.vue.js";
7
+ import R from "../shadcn/TabsList.vue.js";
8
+ import U from "../shadcn/TabsTrigger.vue.js";
9
+ import X from "../shadcn/TabsContent.vue.js";
10
+ const Y = { class: "flex-1 truncate" }, q = ["aria-label", "onClick"], G = { class: "flex-1 w-full overflow-auto" }, K = {
11
+ key: 1,
12
+ class: "p-4"
13
+ }, M = { class: "text-muted-foreground" }, ne = /* @__PURE__ */ V({
14
+ __name: "JTabs",
15
+ props: {
16
+ tabs: {},
17
+ activeTabId: {},
18
+ className: {},
19
+ listClassName: {},
20
+ styletype: { default: "default" }
21
+ },
22
+ emits: ["tabChange", "tabClose", "update:activeTabId"],
23
+ setup(N, { emit: P }) {
24
+ const s = N, r = P, c = d(() => Array.isArray(s.tabs) ? s.tabs : []), a = w(
25
+ s.activeTabId || (c.value.length > 0 ? c.value[0]?.id : "") || ""
26
+ );
27
+ let i = !1;
28
+ g(() => s.activeTabId, (e) => {
29
+ e !== void 0 && e !== a.value && (a.value = e);
30
+ }, { immediate: !0 }), g(c, (e) => {
31
+ !s.activeTabId && e.length > 0 && !e.find((l) => l.id === a.value) && e[0] && (a.value = e[0].id);
32
+ });
33
+ const S = (e) => {
34
+ if (i) return;
35
+ const l = String(e);
36
+ l !== a.value && (i = !0, a.value = l, r("update:activeTabId", l), r("tabChange", l), $(() => {
37
+ i = !1;
38
+ }));
39
+ }, z = (e) => {
40
+ i || e === a.value || (i = !0, a.value = e, r("update:activeTabId", e), r("tabChange", e), $(() => {
41
+ i = !1;
42
+ }));
43
+ }, E = (e, l) => {
44
+ e.stopPropagation(), r("tabClose", l);
45
+ }, I = d(() => {
46
+ const e = ["flex", "flex-col", "w-full", "h-full"];
47
+ return s.className && e.push(s.className), e.join(" ");
48
+ }), _ = {
49
+ default: {
50
+ tabPaddingClass: "px-3 py-2",
51
+ tabTextSizeClass: "text-sm",
52
+ listPaddingClass: "p-2"
53
+ },
54
+ minimal: {
55
+ tabPaddingClass: "px-2 py-1",
56
+ tabTextSizeClass: "text-xs",
57
+ listPaddingClass: "p-1"
58
+ }
59
+ }, p = d(() => _[s.styletype] ?? _.default), j = d(() => {
60
+ const e = ["w-full", "justify-start", p.value.listPaddingClass];
61
+ return s.listClassName && e.push(s.listClassName), e.join(" ");
62
+ });
63
+ return (e, l) => (n(), u(o(J), {
64
+ "model-value": a.value,
65
+ "onUpdate:modelValue": S,
66
+ orientation: "horizontal",
67
+ class: v(I.value)
68
+ }, {
69
+ default: f(() => [
70
+ x(o(R), {
71
+ class: v(j.value)
72
+ }, {
73
+ default: f(() => [
74
+ (n(!0), m(y, null, k(c.value, (t) => (n(), u(o(U), {
75
+ key: t.id,
76
+ value: t.id,
77
+ onClick: (h) => z(t.id),
78
+ class: v(o(F)("!flex !items-center !gap-2", p.value.tabPaddingClass, p.value.tabTextSizeClass))
79
+ }, {
80
+ default: f(() => [
81
+ t.icon ? (n(), u(H, {
82
+ key: 0,
83
+ name: t.icon,
84
+ size: "sm",
85
+ class: "flex-shrink-0"
86
+ }, null, 8, ["name"])) : T("", !0),
87
+ C("span", Y, b(t.label), 1),
88
+ t.closable ? (n(), m("button", {
89
+ key: 1,
90
+ type: "button",
91
+ class: "flex-shrink-0 h-4 w-4 rounded-sm hover:bg-destructive/10 hover:text-destructive transition-colors focus:outline-none focus:ring-2 focus:ring-ring flex items-center justify-center",
92
+ "aria-label": `${t.label} 탭 닫기`,
93
+ onClick: (h) => E(h, t.id)
94
+ }, [
95
+ x(o(L), { class: "h-3 w-3" })
96
+ ], 8, q)) : T("", !0)
97
+ ]),
98
+ _: 2
99
+ }, 1032, ["value", "onClick", "class"]))), 128))
100
+ ]),
101
+ _: 1
102
+ }, 8, ["class"]),
103
+ C("div", G, [
104
+ (n(!0), m(y, null, k(c.value, (t) => (n(), u(o(X), {
105
+ key: `content-${t.id}`,
106
+ value: t.id,
107
+ class: "h-full mt-0 data-[state=active]:flex data-[state=active]:flex-col"
108
+ }, {
109
+ default: f(() => [
110
+ A(e.$slots, `content-${t.id}`, { tab: t }, () => [
111
+ t.component ? (n(), u(B(t.component), D({
112
+ key: 0,
113
+ ref_for: !0
114
+ }, t.props || {}), null, 16)) : (n(), m("div", K, [
115
+ C("p", M, b(t.label) + " 콘텐츠", 1)
116
+ ]))
117
+ ], !0)
118
+ ]),
119
+ _: 2
120
+ }, 1032, ["value"]))), 128))
121
+ ])
122
+ ]),
123
+ _: 3
124
+ }, 8, ["model-value", "class"]));
125
+ }
126
+ });
127
+ export {
128
+ ne as default
129
+ };
130
+ //# sourceMappingURL=JTabs.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JTabs.vue2.js","sources":["../../../../src/components/molecules/JTabs.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, ref, watch, nextTick } from 'vue'\r\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from '@/components/shadcn'\r\nimport type { JTabsProps, JTabsEmits } from '@/types/dynamic-tabs.types'\r\nimport { X } from 'lucide-vue-next'\r\nimport { cn } from '@/lib/utils'\r\nimport JIcon from '@/components/atoms/JIcon.vue'\r\n\r\n/**\r\n * JTabs - 기본 탭 UI 컴포넌트 (molecules)\r\n * Basic Tabs UI Component\r\n * \r\n * @description\r\n * 정적인 탭 목록을 렌더링하는 기본 탭 컴포넌트입니다.\r\n * 닫기 버튼, 아이콘 등을 지원합니다.\r\n * \r\n * @example\r\n * ```vue\r\n * <JTabs \r\n * :tabs=\"tabs\"\r\n * :active-tab-id=\"activeId\"\r\n * @tab-change=\"handleChange\"\r\n * @tab-close=\"handleClose\"\r\n * />\r\n * ```\r\n */\r\n\r\ntype StyleType = 'default' | 'minimal'\r\n\r\nconst props = withDefaults(defineProps<JTabsProps>(), {\r\n styletype: 'default',\r\n})\r\n\r\nconst emit = defineEmits<JTabsEmits>()\r\n\r\n/**\r\n * 안전한 tabs 배열 (undefined/null 체크)\r\n * Safe tabs array (undefined/null check)\r\n */\r\nconst safeTabs = computed(() => {\r\n return Array.isArray(props.tabs) ? props.tabs : []\r\n})\r\n\r\n/**\r\n * 현재 활성화된 탭 ID (내부 상태)\r\n * Current active tab ID (internal state)\r\n */\r\nconst internalActiveId = ref<string>(\r\n props.activeTabId || (safeTabs.value.length > 0 ? safeTabs.value[0]?.id : '') || ''\r\n)\r\n\r\n/**\r\n * 이벤트 처리 중 플래그 (중복 이벤트 방지)\r\n * Flag to prevent duplicate events\r\n */\r\nlet isHandlingEvent = false\r\n\r\n/**\r\n * props.activeTabId가 변경되면 내부 상태 동기화\r\n * Sync internal state when props.activeTabId changes\r\n */\r\nwatch(() => props.activeTabId, (newValue) => {\r\n if (newValue !== undefined && newValue !== internalActiveId.value) {\r\n internalActiveId.value = newValue\r\n }\r\n}, { immediate: true })\r\n\r\n/**\r\n * props.tabs가 변경되고 activeTabId가 없으면 첫 번째 탭 활성화\r\n * Activate first tab when tabs change and no activeTabId\r\n */\r\nwatch(safeTabs, (newTabs) => {\r\n if (!props.activeTabId && newTabs.length > 0 && !newTabs.find(t => t.id === internalActiveId.value) && newTabs[0]) {\r\n internalActiveId.value = newTabs[0].id\r\n }\r\n})\r\n\r\n/**\r\n * 탭 값 변경 핸들러 (reka-ui TabsRoot에서 직접 호출됨)\r\n * Tab value change handler (called directly from reka-ui TabsRoot)\r\n */\r\nconst handleTabValueChange = (value: string | number) => {\r\n if (isHandlingEvent) return\r\n \r\n const stringValue = String(value)\r\n if (stringValue !== internalActiveId.value) {\r\n isHandlingEvent = true\r\n internalActiveId.value = stringValue\r\n emit('update:activeTabId', stringValue)\r\n emit('tabChange', stringValue)\r\n // 다음 tick에서 플래그 리셋\r\n nextTick(() => {\r\n isHandlingEvent = false\r\n })\r\n }\r\n}\r\n\r\n/**\r\n * 탭 클릭 핸들러 (백업 방안 - reka-ui 이벤트가 작동하지 않을 경우)\r\n * Tab click handler (backup - in case reka-ui events don't work)\r\n */\r\nconst handleTabClick = (tabId: string) => {\r\n // reka-ui 이벤트가 작동하지 않을 경우 직접 처리\r\n // handleTabValueChange가 이미 처리했으면 중복 방지\r\n if (isHandlingEvent || tabId === internalActiveId.value) return\r\n \r\n isHandlingEvent = true\r\n internalActiveId.value = tabId\r\n emit('update:activeTabId', tabId)\r\n emit('tabChange', tabId)\r\n // 다음 tick에서 플래그 리셋\r\n nextTick(() => {\r\n isHandlingEvent = false\r\n })\r\n}\r\n\r\n/**\r\n * 탭 닫기 핸들러\r\n * Tab close handler\r\n */\r\nconst handleCloseTab = (e: Event, tabId: string) => {\r\n e.stopPropagation() // 탭 클릭 이벤트 전파 방지\r\n emit('tabClose', tabId)\r\n}\r\n\r\n/**\r\n * 루트 클래스\r\n * Root classes\r\n */\r\nconst rootClasses = computed(() => {\r\n const classes = ['flex', 'flex-col', 'w-full', 'h-full']\r\n \r\n if (props.className) {\r\n classes.push(props.className)\r\n }\r\n \r\n return classes.join(' ')\r\n})\r\n\r\n/**\r\n * 스타일 프리셋\r\n */\r\nconst STYLE_PRESETS: Record<StyleType, {\r\n tabPaddingClass: string\r\n tabTextSizeClass: string\r\n listPaddingClass: string\r\n}> = {\r\n default: {\r\n tabPaddingClass: 'px-3 py-2',\r\n tabTextSizeClass: 'text-sm',\r\n listPaddingClass: 'p-2',\r\n },\r\n minimal: {\r\n tabPaddingClass: 'px-2 py-1',\r\n tabTextSizeClass: 'text-xs',\r\n listPaddingClass: 'p-1',\r\n },\r\n}\r\n\r\nconst preset = computed(() => {\r\n return STYLE_PRESETS[props.styletype] ?? STYLE_PRESETS.default\r\n})\r\n\r\n/**\r\n * 탭 리스트 클래스\r\n * Tabs list classes\r\n */\r\nconst listClasses = computed(() => {\r\n const classes = ['w-full', 'justify-start', preset.value.listPaddingClass]\r\n \r\n if (props.listClassName) {\r\n classes.push(props.listClassName)\r\n }\r\n \r\n return classes.join(' ')\r\n})\r\n</script>\r\n\r\n<template>\r\n <Tabs\r\n :model-value=\"internalActiveId\"\r\n @update:model-value=\"handleTabValueChange\"\r\n orientation=\"horizontal\"\r\n :class=\"rootClasses\"\r\n >\r\n <!-- 탭 헤더 영역 / Tab Headers -->\r\n <TabsList :class=\"listClasses\">\r\n <TabsTrigger\r\n v-for=\"tab in safeTabs\"\r\n :key=\"tab.id\"\r\n :value=\"tab.id\"\r\n @click=\"handleTabClick(tab.id)\"\r\n :class=\"cn('!flex !items-center !gap-2', preset.tabPaddingClass, preset.tabTextSizeClass)\"\r\n >\r\n <!-- 탭 아이콘 (있을 경우) / Tab Icon -->\r\n <JIcon \r\n v-if=\"tab.icon\" \r\n :name=\"tab.icon\" \r\n size=\"sm\"\r\n class=\"flex-shrink-0\"\r\n />\r\n \r\n <!-- 탭 레이블 / Tab Label -->\r\n <span class=\"flex-1 truncate\">{{ tab.label }}</span>\r\n \r\n <!-- 닫기 버튼 / Close Button (항상 표시) -->\r\n <button\r\n v-if=\"tab.closable\"\r\n type=\"button\"\r\n class=\"flex-shrink-0 h-4 w-4 rounded-sm hover:bg-destructive/10 hover:text-destructive transition-colors focus:outline-none focus:ring-2 focus:ring-ring flex items-center justify-center\"\r\n :aria-label=\"`${tab.label} 탭 닫기`\"\r\n @click=\"(e) => handleCloseTab(e, tab.id)\"\r\n >\r\n <X class=\"h-3 w-3\" />\r\n </button>\r\n </TabsTrigger>\r\n </TabsList>\r\n\r\n <!-- 탭 콘텐츠 영역 / Tab Contents -->\r\n <div class=\"flex-1 w-full overflow-auto\">\r\n <TabsContent\r\n v-for=\"tab in safeTabs\"\r\n :key=\"`content-${tab.id}`\"\r\n :value=\"tab.id\"\r\n class=\"h-full mt-0 data-[state=active]:flex data-[state=active]:flex-col\"\r\n >\r\n <!-- 슬롯 우선 / Slot First -->\r\n <slot :name=\"`content-${tab.id}`\" :tab=\"tab\">\r\n <!-- 동적 컴포넌트 렌더링 / Dynamic Component Rendering -->\r\n <component\r\n v-if=\"tab.component\"\r\n :is=\"tab.component\"\r\n v-bind=\"tab.props || {}\"\r\n />\r\n \r\n <!-- 기본 콘텐츠 / Default Content -->\r\n <div v-else class=\"p-4\">\r\n <p class=\"text-muted-foreground\">{{ tab.label }} 콘텐츠</p>\r\n </div>\r\n </slot>\r\n </TabsContent>\r\n </div>\r\n </Tabs>\r\n</template>\r\n\r\n<style scoped>\r\n/**\r\n * 탭 리스트 스타일 - 하단 보더 제거\r\n * Tab list styles without bottom border\r\n */\r\n:deep([role=\"tablist\"]) {\r\n overflow-x: auto;\r\n overflow-y: hidden;\r\n scrollbar-width: thin;\r\n scrollbar-color: rgba(0, 0, 0, 0.2) transparent;\r\n background: hsl(var(--background));\r\n padding: 0 0.5rem;\r\n padding-top: 0.5rem;\r\n gap: 0.25rem;\r\n border-bottom: none;\r\n}\r\n\r\n:deep([role=\"tablist\"]::-webkit-scrollbar) {\r\n height: 6px;\r\n}\r\n\r\n:deep([role=\"tablist\"]::-webkit-scrollbar-track) {\r\n background: transparent;\r\n}\r\n\r\n:deep([role=\"tablist\"]::-webkit-scrollbar-thumb) {\r\n background-color: rgba(0, 0, 0, 0.2);\r\n border-radius: 3px;\r\n}\r\n\r\n:deep([role=\"tablist\"]::-webkit-scrollbar-thumb:hover) {\r\n background-color: rgba(0, 0, 0, 0.3);\r\n}\r\n\r\n/**\r\n * 다크모드에서 스크롤바 스타일\r\n * Scrollbar styles in dark mode\r\n */\r\n.dark :deep([role=\"tablist\"]::-webkit-scrollbar-thumb) {\r\n background-color: rgba(255, 255, 255, 0.2);\r\n}\r\n\r\n.dark :deep([role=\"tablist\"]::-webkit-scrollbar-thumb:hover) {\r\n background-color: rgba(255, 255, 255, 0.3);\r\n}\r\n\r\n.dark :deep([role=\"tablist\"]) {\r\n scrollbar-color: rgba(255, 255, 255, 0.2) transparent;\r\n}\r\n\r\n/**\r\n * 탭 버튼 스타일 - 명확한 구분\r\n * Tab button styles - clear distinction\r\n */\r\n:deep([role=\"tab\"]) {\r\n position: relative;\r\n padding: 0.625rem 1rem;\r\n border-radius: 0.375rem 0.375rem 0 0;\r\n transition: all 0.2s ease;\r\n border: 1px solid transparent;\r\n border-bottom: none;\r\n}\r\n\r\n/**\r\n * Minimal 스타일 탭 버튼 - JSidebarAdvanced와 높이 맞춤\r\n */\r\n:deep([role=\"tablist\"][class*=\"p-1\"] [role=\"tab\"]) {\r\n padding: 0.625rem 0.5rem;\r\n}\r\n\r\n/**\r\n * 비활성 탭 - 명확하게 구분\r\n * Inactive tabs - clear distinction\r\n */\r\n:deep([role=\"tab\"][data-state=\"inactive\"]) {\r\n background: hsl(var(--muted) / 0.2);\r\n color: hsl(var(--muted-foreground));\r\n border-top: 1px solid hsl(var(--border) / 0.4);\r\n border-left: 1px solid hsl(var(--border) / 0.4);\r\n border-right: 1px solid hsl(var(--border) / 0.4);\r\n}\r\n\r\n:deep([role=\"tab\"][data-state=\"inactive\"]:hover) {\r\n background: hsl(var(--muted) / 0.4);\r\n color: hsl(var(--foreground));\r\n}\r\n\r\n/**\r\n * 다크모드에서 비활성 탭 - 다크 배경색 사용\r\n * Inactive tabs in dark mode - use dark background\r\n */\r\n.dark :deep([role=\"tab\"][data-state=\"inactive\"]) {\r\n background: hsl(var(--secondary));\r\n color: hsl(var(--secondary-foreground));\r\n border-top: 1px solid hsl(var(--border) / 0.5);\r\n border-left: 1px solid hsl(var(--border) / 0.5);\r\n border-right: 1px solid hsl(var(--border) / 0.5);\r\n}\r\n\r\n.dark :deep([role=\"tab\"][data-state=\"inactive\"]:hover) {\r\n background: hsl(var(--muted));\r\n color: hsl(var(--muted-foreground));\r\n}\r\n\r\n/**\r\n * 활성 탭 - 강조된 스타일\r\n * Active tab - emphasized style\r\n */\r\n:deep([role=\"tab\"][data-state=\"active\"]) {\r\n background: hsl(var(--background));\r\n color: hsl(var(--foreground));\r\n font-weight: 500;\r\n border-top: 2px solid hsl(var(--primary));\r\n border-left: 1px solid hsl(var(--border));\r\n border-right: 1px solid hsl(var(--border));\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\r\n z-index: 1;\r\n}\r\n\r\n/**\r\n * 다크모드에서 활성 탭 - 배경색 명확히 구분\r\n * Active tab in dark mode - clear background distinction\r\n */\r\n.dark :deep([role=\"tab\"][data-state=\"active\"]) {\r\n background: hsl(var(--card));\r\n color: hsl(var(--card-foreground));\r\n border-top: 2px solid hsl(var(--primary));\r\n border-left: 1px solid hsl(var(--border));\r\n border-right: 1px solid hsl(var(--border));\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\r\n}\r\n\r\n/**\r\n * 콘텐츠 영역에 상단 보더 추가\r\n * Add top border to content area\r\n */\r\n:deep([role=\"tabpanel\"]) {\r\n border-top: 1px solid hsl(var(--border));\r\n}\r\n\r\n/**\r\n * 다크모드에서 콘텐츠 영역 보더 - 더 부드러운 구분\r\n * Content area border in dark mode - subtler separation\r\n */\r\n.dark :deep([role=\"tabpanel\"]) {\r\n border-top: 1px solid hsl(var(--border) / 0.6);\r\n}\r\n</style>\r\n\r\n"],"names":["props","__props","emit","__emit","safeTabs","computed","internalActiveId","ref","isHandlingEvent","watch","newValue","newTabs","t","handleTabValueChange","value","stringValue","nextTick","handleTabClick","tabId","handleCloseTab","rootClasses","classes","STYLE_PRESETS","preset","listClasses","_createBlock","_unref","Tabs","_createVNode","TabsList","_createElementBlock","_Fragment","_renderList","tab","TabsTrigger","$event","_normalizeClass","JIcon","_createElementVNode","_hoisted_1","_toDisplayString","e","X","_hoisted_3","TabsContent","_renderSlot","_ctx","_openBlock","_resolveDynamicComponent","_mergeProps","_hoisted_4","_hoisted_5"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),f=require("../atoms/JButton.vue.cjs");require("../shadcn/index.cjs");require("lucide-vue-next");const n=require("../../lib/utils.cjs");require("@internationalized/date");require("../shadcn/badge-variants.cjs");require("@vueuse/core");require("reka-ui");;/* empty css */require("../shadcn/avatar-variants.cjs");const o=require("../atoms/JIcon.vue.cjs"),b=require("../atoms/JLabel.vue.cjs"),x=require("../atoms/JPopover.vue.cjs");require("ag-grid-vue3");require("ag-grid-community");require("ag-grid-enterprise");;/* empty css */;/* empty css */;/* empty css */;/* empty css */const p={class:"flex items-center gap-3 flex-1"},g={class:"flex items-center gap-2"},y={class:"p-2"},C={class:"text-sm text-muted-foreground whitespace-normal break-words"},_={key:0,class:"flex items-center gap-2"},h={key:1},k=e.defineComponent({__name:"JTitlebar",props:{styletype:{default:"default"},icon:{},title:{},description:{},buttons:{default:()=>[]}},emits:["buttonClick"],setup(r,{emit:a}){const c=r,i={default:{class:"flex items-center justify-between w-full h-14 px-4 border-b border-border bg-background",iconClass:"text-primary",titleClass:"text-foreground",infoIconClass:"text-muted-foreground hover:text-primary"},primary:{class:"flex items-center justify-between w-full h-14 px-4 border-b border-blue-400/30 bg-blue-500",iconClass:"text-white",titleClass:"text-white font-semibold",infoIconClass:"text-white/80 hover:text-white"},accent:{class:"flex items-center justify-between w-full h-14 px-4 border-b border-blue-200 bg-blue-50",iconClass:"text-blue-600",titleClass:"text-blue-700 font-semibold",infoIconClass:"text-blue-600/70 hover:text-blue-700"},neutral:{class:"flex items-center justify-between w-full h-14 px-4 border-b border-gray-300 bg-gray-100",iconClass:"text-gray-600",titleClass:"text-gray-700",infoIconClass:"text-gray-500 hover:text-gray-700"},elevated:{class:"flex items-center justify-between w-full h-14 px-4 border-b border-border bg-background shadow-md",iconClass:"text-primary",titleClass:"text-foreground font-semibold",infoIconClass:"text-muted-foreground hover:text-primary"}},l=e.computed(()=>i[c.styletype]??i.default),u=a,d=s=>{s.onClick?.(),u("buttonClick",s)};return(s,v)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(n.cn)(l.value.class))},[e.createElementVNode("div",p,[r.icon?(e.openBlock(),e.createBlock(e.unref(o.default),{key:0,name:r.icon,size:"md",class:e.normalizeClass(l.value.iconClass)},null,8,["name","class"])):e.createCommentVNode("",!0),e.createElementVNode("div",g,[e.createVNode(e.unref(b.default),{text:r.title||"",class:e.normalizeClass(e.unref(n.cn)("text-lg font-semibold",l.value.titleClass))},null,8,["text","class"]),r.description?(e.openBlock(),e.createBlock(e.unref(x.default),{key:0,position:"bottom",align:"center","side-offset":8},{trigger:e.withCtx(()=>[e.createVNode(e.unref(o.default),{name:"info",size:"sm",class:e.normalizeClass(e.unref(n.cn)("cursor-help transition-colors inline-flex",l.value.infoIconClass))},null,8,["class"])]),default:e.withCtx(()=>[e.createElementVNode("div",y,[e.createElementVNode("p",C,e.toDisplayString(r.description),1)])]),_:1})):e.createCommentVNode("",!0)])]),r.buttons&&r.buttons.length>0?(e.openBlock(),e.createElementBlock("div",_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.buttons,(t,m)=>(e.openBlock(),e.createBlock(e.unref(f.default),{key:m,variant:t.variant,styletype:t.styletype,disabled:t.disabled,loading:t.loading,class:e.normalizeClass(t.size==="sm"?"h-8":t.size==="lg"?"h-11":"h-9"),onClick:q=>d(t)},{default:e.withCtx(()=>[t.icon?(e.openBlock(),e.createBlock(e.unref(o.default),{key:0,name:t.icon,size:"sm",class:"mr-1.5"},null,8,["name"])):e.createCommentVNode("",!0),t.text?(e.openBlock(),e.createElementBlock("span",h,e.toDisplayString(t.text),1)):e.createCommentVNode("",!0)]),_:2},1032,["variant","styletype","disabled","loading","class","onClick"]))),128))])):e.createCommentVNode("",!0),e.renderSlot(s.$slots,"buttons")],2))}});exports.default=k;
2
+ //# sourceMappingURL=JTitlebar.vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JTitlebar.vue.cjs","sources":["../../../../src/components/molecules/JTitlebar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\"\nimport { JIcon, JLabel, JPopover, JButton } from '@/components/atoms'\nimport type { ButtonVariants } from '@/components/shadcn'\nimport { cn } from \"@/lib/utils\"\n\nexport type TitlebarButton = {\n /** 버튼 아이콘 */\n icon?: string\n /** 버튼 텍스트 */\n text?: string\n /** 버튼 클릭 핸들러 */\n onClick?: () => void\n /** 버튼 variant */\n variant?: ButtonVariants['variant']\n /** 버튼 스타일 타입 */\n styletype?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'outline' | 'ghost' | 'link' | 'sm' | 'lg' | 'icon'\n /** 버튼 size */\n size?: 'sm' | 'md' | 'lg'\n /** 버튼 비활성화 */\n disabled?: boolean\n /** 버튼 로딩 상태 */\n loading?: boolean\n}\n\ntype StyleType =\n | 'default' // 기본 스타일: 일반 페이지용 (흰 배경, 얇은 보더)\n | 'primary' // 강조 스타일: 주요 기능용 (밝은 파란 배경, 흰 텍스트)\n | 'accent' // 액센트 스타일: 부드러운 강조용 (연한 파란 배경, 진한 텍스트)\n | 'neutral' // 중립 스타일: 서브 페이지용 (회색 배경, 회색 텍스트)\n | 'elevated' // 강조 스타일: 깊이감 있는 구분 (흰 배경, 그림자, 보더)\n\nconst props = withDefaults(\n defineProps<{\n /** Titlebar 스타일 타입 */\n styletype?: StyleType\n /** 프로그램 아이콘 */\n icon?: string\n /** 프로그램명 */\n title?: string\n /** 프로그램 설명 (Popover에 표시) */\n description?: string\n /** 메인 버튼 목록 */\n buttons?: TitlebarButton[]\n }>(),\n {\n styletype: 'default',\n buttons: () => [],\n }\n)\n\n/**\n * styletype -> class 매핑 (배경, 보더, 그림자 등)\n */\nconst STYLE_PRESETS: Record<StyleType, { \n class: string\n iconClass: string // 아이콘 색상 클래스\n titleClass: string // 제목 텍스트 색상 클래스\n infoIconClass: string // 정보 아이콘 색상 클래스\n}> = {\n default: {\n // 기본: 흰 배경 + 얇은 보더 (가장 일반적)\n class: 'flex items-center justify-between w-full h-14 px-4 border-b border-border bg-background',\n iconClass: 'text-primary',\n titleClass: 'text-foreground',\n infoIconClass: 'text-muted-foreground hover:text-primary',\n },\n primary: {\n // 강조: 밝은 파란 배경 + 흰 텍스트 (명확한 강조)\n // text-white를 제거하여 버튼이 색상 상속을 받지 않도록 함\n class: 'flex items-center justify-between w-full h-14 px-4 border-b border-blue-400/30 bg-blue-500',\n iconClass: 'text-white',\n titleClass: 'text-white font-semibold',\n infoIconClass: 'text-white/80 hover:text-white',\n },\n accent: {\n // 액센트: 연한 파란 배경 + 진한 파란 텍스트 (부드러운 강조)\n // text-blue-700을 제거하여 버튼이 색상 상속을 받지 않도록 함\n class: 'flex items-center justify-between w-full h-14 px-4 border-b border-blue-200 bg-blue-50',\n iconClass: 'text-blue-600',\n titleClass: 'text-blue-700 font-semibold',\n infoIconClass: 'text-blue-600/70 hover:text-blue-700',\n },\n neutral: {\n // 중립: 회색 배경 + 회색 텍스트 (확실한 구분)\n // text-gray-700을 제거하여 버튼이 색상 상속을 받지 않도록 함\n class: 'flex items-center justify-between w-full h-14 px-4 border-b border-gray-300 bg-gray-100',\n iconClass: 'text-gray-600',\n titleClass: 'text-gray-700',\n infoIconClass: 'text-gray-500 hover:text-gray-700',\n },\n elevated: {\n // 강조: 흰 배경 + 그림자 + 보더 (깊이감 있는 구분)\n class: 'flex items-center justify-between w-full h-14 px-4 border-b border-border bg-background shadow-md',\n iconClass: 'text-primary',\n titleClass: 'text-foreground font-semibold',\n infoIconClass: 'text-muted-foreground hover:text-primary',\n },\n}\n\nconst preset = computed(() => {\n return STYLE_PRESETS[props.styletype] ?? STYLE_PRESETS.default\n})\n\nconst emit = defineEmits<{\n /** 버튼 클릭 이벤트 */\n buttonClick: [button: TitlebarButton]\n}>()\n\nconst handleButtonClick = (button: TitlebarButton) => {\n // 버튼 클릭 핸들러 패턴:\n // 1. button.onClick이 있으면 실행 (인라인 핸들러)\n // 2. 항상 emit('buttonClick', button) 실행 (부모 컴포넌트로 전달)\n // 주의: onClick과 emit이 모두 실행되므로 중복 처리 가능성 있음\n button.onClick?.()\n emit('buttonClick', button)\n}\n</script>\n\n<template>\n <div :class=\"cn(preset.class)\">\n <!-- 왼쪽: 아이콘 + 프로그램명 -->\n <div class=\"flex items-center gap-3 flex-1\">\n <!-- 아이콘 -->\n <JIcon \n v-if=\"icon\" \n :name=\"icon\" \n size=\"md\" \n :class=\"preset.iconClass\"\n />\n \n <!-- 프로그램명 + 정보 아이콘 + Popover -->\n <div class=\"flex items-center gap-2\">\n <!-- 프로그램명 -->\n <JLabel \n :text=\"title || ''\" \n :class=\"cn('text-lg font-semibold', preset.titleClass)\"\n />\n \n <!-- 정보 아이콘 (description이 있을 때만 표시) -->\n <JPopover \n v-if=\"description\" \n position=\"bottom\"\n align=\"center\"\n :side-offset=\"8\"\n >\n <template #trigger>\n <JIcon \n name=\"info\" \n size=\"sm\" \n :class=\"cn('cursor-help transition-colors inline-flex', preset.infoIconClass)\"\n />\n </template>\n <div class=\"p-2\">\n <p class=\"text-sm text-muted-foreground whitespace-normal break-words\">{{ description }}</p>\n </div>\n </JPopover>\n </div>\n </div>\n\n <!-- 오른쪽: 메인 버튼들 -->\n <!-- buttons prop으로 정의된 버튼들 (v-if로 조건부 렌더링) -->\n <div v-if=\"buttons && buttons.length > 0\" class=\"flex items-center gap-2\">\n <JButton\n v-for=\"(button, index) in buttons\"\n :key=\"index\"\n :variant=\"button.variant\"\n :styletype=\"button.styletype\"\n :disabled=\"button.disabled\"\n :loading=\"button.loading\"\n :class=\"button.size === 'sm' ? 'h-8' : button.size === 'lg' ? 'h-11' : 'h-9'\"\n @click=\"handleButtonClick(button)\"\n >\n <JIcon v-if=\"button.icon\" :name=\"button.icon\" size=\"sm\" class=\"mr-1.5\" />\n <span v-if=\"button.text\">{{ button.text }}</span>\n </JButton>\n </div>\n\n <!-- 버튼 슬롯 레이아웃 설명:\n - buttons prop과 buttons slot이 모두 제공되면 함께 표시됨\n - buttons prop: 구조화된 버튼 정의 (JButton 컴포넌트 사용)\n - buttons slot: 완전한 커스텀 버튼 제어 가능\n - 레이아웃: buttons prop이 먼저 렌더링되고, 그 다음 slot이 렌더링됨 -->\n <slot name=\"buttons\" />\n </div>\n</template>\n\n"],"names":["props","__props","STYLE_PRESETS","preset","computed","emit","__emit","handleButtonClick","button","_createElementBlock","_normalizeClass","_unref","cn","_createElementVNode","_hoisted_1","_createBlock","JIcon","_hoisted_2","_createVNode","JLabel","JPopover","_hoisted_3","_hoisted_4","_toDisplayString","_openBlock","_hoisted_5","_Fragment","_renderList","index","JButton","$event","_hoisted_6","_renderSlot","_ctx"],"mappings":"67CAgCA,MAAMA,EAAQC,EAsBRC,EAKD,CACH,QAAS,CAEP,MAAO,0FACP,UAAW,eACX,WAAY,kBACZ,cAAe,0CAAA,EAEjB,QAAS,CAGP,MAAO,6FACP,UAAW,aACX,WAAY,2BACZ,cAAe,gCAAA,EAEjB,OAAQ,CAGN,MAAO,yFACP,UAAW,gBACX,WAAY,8BACZ,cAAe,sCAAA,EAEjB,QAAS,CAGP,MAAO,0FACP,UAAW,gBACX,WAAY,gBACZ,cAAe,mCAAA,EAEjB,SAAU,CAER,MAAO,oGACP,UAAW,eACX,WAAY,gCACZ,cAAe,0CAAA,CACjB,EAGIC,EAASC,EAAAA,SAAS,IACfF,EAAcF,EAAM,SAAS,GAAKE,EAAc,OACxD,EAEKG,EAAOC,EAKPC,EAAqBC,GAA2B,CAKpDA,EAAO,UAAA,EACPH,EAAK,cAAeG,CAAM,CAC5B,8BAIEC,EAAAA,mBAgEM,MAAA,CAhEA,MAAKC,EAAAA,eAAEC,QAAAC,EAAAA,EAAA,EAAGT,EAAA,MAAO,KAAK,CAAA,CAAA,GAE1BU,EAAAA,mBAoCM,MApCNC,EAoCM,CAjCIb,EAAA,oBADRc,EAAAA,YAKEJ,EAAAA,MAAAK,EAAAA,OAAA,EAAA,OAHC,KAAMf,EAAA,KACP,KAAK,KACJ,MAAKS,EAAAA,eAAEP,EAAA,MAAO,SAAS,CAAA,wDAI1BU,EAAAA,mBAyBM,MAzBNI,EAyBM,CAvBJC,cAGEP,EAAAA,MAAAQ,EAAAA,OAAA,EAAA,CAFC,KAAMlB,EAAA,OAAK,GACX,MAAKS,EAAAA,eAAEC,EAAAA,MAAAC,EAAAA,EAAA,EAAE,wBAA0BT,EAAA,MAAO,UAAU,CAAA,CAAA,2BAK/CF,EAAA,2BADRc,EAAAA,YAgBWJ,EAAAA,MAAAS,EAAAA,OAAA,EAAA,OAdT,SAAS,SACT,MAAM,SACL,cAAa,CAAA,GAEH,kBACT,IAIE,CAJFF,cAIEP,EAAAA,MAAAK,EAAAA,OAAA,EAAA,CAHA,KAAK,OACL,KAAK,KACJ,MAAKN,EAAAA,eAAEC,EAAAA,MAAAC,EAAAA,EAAA,EAAE,4CAA8CT,EAAA,MAAO,aAAa,CAAA,CAAA,wCAGhF,IAEM,CAFNU,EAAAA,mBAEM,MAFNQ,EAEM,CADJR,EAAAA,mBAA4F,IAA5FS,EAA4FC,EAAAA,gBAAlBtB,EAAA,WAAW,EAAA,CAAA,CAAA,4CAQlFA,EAAA,SAAWA,EAAA,QAAQ,OAAM,GAApCuB,EAAAA,YAAAf,EAAAA,mBAcM,MAdNgB,EAcM,EAbJD,EAAAA,UAAA,EAAA,EAAAf,EAAAA,mBAYUiB,WAAA,KAAAC,EAAAA,WAXkB1B,EAAA,QAAO,CAAzBO,EAAQoB,mBADlBb,EAAAA,YAYUJ,EAAAA,MAAAkB,EAAAA,OAAA,EAAA,CAVP,IAAKD,EACL,QAASpB,EAAO,QAChB,UAAWA,EAAO,UAClB,SAAUA,EAAO,SACjB,QAASA,EAAO,QAChB,uBAAOA,EAAO,OAAI,KAAA,MAAoBA,EAAO,OAAI,KAAA,OAAA,KAAA,EACjD,QAAKsB,GAAEvB,EAAkBC,CAAM,CAAA,qBAEhC,IAAyE,CAA5DA,EAAO,oBAApBO,EAAAA,YAAyEJ,EAAAA,MAAAK,EAAAA,OAAA,EAAA,OAA9C,KAAMR,EAAO,KAAM,KAAK,KAAK,MAAM,QAAA,gDAClDA,EAAO,oBAAnBC,EAAAA,mBAAiD,OAAAsB,EAAAR,EAAAA,gBAArBf,EAAO,IAAI,EAAA,CAAA,kJAS3CwB,aAAuBC,EAAA,OAAA,SAAA,CAAA"}