@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 @@
1
+ {"version":3,"file":"JDynamicTabs.vue.js","sources":["../../../../src/components/organisms/JDynamicTabs.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { ref, computed, watch } from 'vue'\r\nimport JTabs from '@/components/molecules/JTabs.vue'\r\nimport type { \r\n JDynamicTabsProps, \r\n JDynamicTabsEmits, \r\n JDynamicTabsMethods,\r\n DynamicTab \r\n} from '@/types/dynamic-tabs.types'\r\n\r\n/**\r\n * JDynamicTabs - 동적 탭 컴포넌트 (organisms)\r\n * Dynamic Tabs Component\r\n * \r\n * @description\r\n * 사이드 메뉴 클릭으로 탭을 동적으로 추가/제거할 수 있는 탭 컴포넌트입니다.\r\n * \r\n * Features:\r\n * - 탭 동적 추가/제거\r\n * - 중복 탭 방지 (이미 있으면 활성화)\r\n * - 닫기 버튼으로 탭 제거\r\n * - 활성 탭 자동 재설정\r\n * - 최대 탭 개수 제한\r\n * \r\n * @example\r\n * const tabsRef = ref()\r\n * \r\n * const handleMenuClick = (menuItem) => {\r\n * tabsRef.value?.addTab({\r\n * id: menuItem.id,\r\n * label: menuItem.label,\r\n * component: menuItem.component,\r\n * closable: true\r\n * })\r\n * }\r\n */\r\n\r\nconst props = withDefaults(defineProps<JDynamicTabsProps>(), {\r\n initialTabs: () => [],\r\n maxTabs: 0, // 0 = unlimited\r\n emptyMessage: '탭을 추가해주세요.',\r\n styletype: 'default',\r\n})\r\n\r\nconst emit = defineEmits<JDynamicTabsEmits>()\r\n\r\n/**\r\n * 탭 목록 (내부 상태)\r\n * Tabs list (internal state)\r\n */\r\nconst tabs = ref<DynamicTab[]>(Array.isArray(props.initialTabs) ? [...props.initialTabs] : [])\r\n\r\n/**\r\n * 현재 활성화된 탭 ID (내부 상태)\r\n * Current active tab ID (internal state)\r\n */\r\nconst activeTabId = ref<string>(\r\n props.defaultActiveId || (Array.isArray(props.initialTabs) && props.initialTabs.length > 0 ? props.initialTabs[0]?.id : '') || ''\r\n)\r\n\r\n/**\r\n * initialTabs가 변경되면 내부 상태 업데이트\r\n * Update internal state when initialTabs changes\r\n */\r\nwatch(() => props.initialTabs, (newTabs) => {\r\n if (!newTabs) {\r\n tabs.value = []\r\n return\r\n }\r\n \r\n if (Array.isArray(newTabs) && newTabs.length > 0) {\r\n tabs.value = [...newTabs]\r\n if (!activeTabId.value && newTabs[0]) {\r\n activeTabId.value = newTabs[0].id\r\n }\r\n } else if (Array.isArray(newTabs)) {\r\n // 빈 배열인 경우\r\n tabs.value = []\r\n } else {\r\n // 배열이 아닌 경우\r\n tabs.value = []\r\n }\r\n}, { immediate: true })\r\n\r\n/**\r\n * 탭 추가\r\n * Add tab (if exists, activate it; otherwise, add to array and activate)\r\n * \r\n * @param tab - 추가할 탭 정보\r\n */\r\nconst addTab = (tab: DynamicTab) => {\r\n // tabs.value가 배열이 아니면 초기화\r\n if (!Array.isArray(tabs.value)) {\r\n tabs.value = []\r\n }\r\n \r\n // 이미 존재하는 탭인지 확인\r\n const existingTab = tabs.value.find(t => t.id === tab.id)\r\n \r\n if (existingTab) {\r\n // 이미 있으면 해당 탭 활성화\r\n activateTab(tab.id)\r\n return\r\n }\r\n \r\n // 최대 탭 개수 체크\r\n if (props.maxTabs > 0 && tabs.value.length >= props.maxTabs) {\r\n console.warn(`최대 ${props.maxTabs}개의 탭만 열 수 있습니다.`)\r\n return\r\n }\r\n \r\n // 새 탭 추가\r\n tabs.value.push({\r\n ...tab,\r\n closable: tab.closable !== false, // 기본값 true\r\n })\r\n \r\n // 새로 추가된 탭 활성화\r\n activateTab(tab.id)\r\n \r\n // 이벤트 발생\r\n emit('tabAdd', tab)\r\n}\r\n\r\n/**\r\n * 탭 닫기\r\n * Close tab (remove from array and reset active tab)\r\n * \r\n * @param id - 닫을 탭 ID\r\n */\r\nconst closeTab = (id: string) => {\r\n if (!Array.isArray(tabs.value)) {\r\n return\r\n }\r\n \r\n const tabIndex = tabs.value.findIndex(t => t.id === id)\r\n \r\n if (tabIndex === -1) return\r\n \r\n // 탭 제거\r\n tabs.value.splice(tabIndex, 1)\r\n \r\n // 활성 탭 재설정\r\n if (activeTabId.value === id) {\r\n if (tabs.value.length > 0) {\r\n // 이전 탭이 있으면 이전 탭 활성화, 없으면 다음 탭 활성화\r\n const newIndex = Math.min(tabIndex, tabs.value.length - 1)\r\n activeTabId.value = tabs.value[newIndex]?.id || ''\r\n } else {\r\n activeTabId.value = ''\r\n }\r\n }\r\n \r\n // 이벤트 발생\r\n emit('tabClose', id)\r\n}\r\n\r\n/**\r\n * 탭 활성화\r\n * Activate tab\r\n * \r\n * @param id - 활성화할 탭 ID\r\n */\r\nconst activateTab = (id: string) => {\r\n if (!Array.isArray(tabs.value)) {\r\n return\r\n }\r\n const tab = tabs.value.find(t => t.id === id)\r\n if (tab) {\r\n activeTabId.value = id\r\n }\r\n}\r\n\r\n/**\r\n * 특정 탭 찾기\r\n * Find specific tab\r\n * \r\n * @param id - 찾을 탭 ID\r\n */\r\nconst findTab = (id: string): DynamicTab | undefined => {\r\n if (!Array.isArray(tabs.value)) {\r\n return undefined\r\n }\r\n return tabs.value.find(t => t.id === id)\r\n}\r\n\r\n/**\r\n * 모든 탭 닫기 (closable이 true인 탭만)\r\n * Close all tabs (only closable tabs)\r\n */\r\nconst closeAllTabs = () => {\r\n if (!Array.isArray(tabs.value)) {\r\n return\r\n }\r\n const closableTabs = tabs.value.filter(t => t.closable)\r\n closableTabs.forEach(tab => closeTab(tab.id))\r\n}\r\n\r\n/**\r\n * 탭 변경 핸들러\r\n * Tab change handler\r\n */\r\nconst handleTabChange = (id: string) => {\r\n activeTabId.value = id\r\n emit('tabChange', id)\r\n}\r\n\r\n/**\r\n * 탭 닫기 핸들러\r\n * Tab close handler\r\n */\r\nconst handleTabClose = (id: string) => {\r\n closeTab(id)\r\n}\r\n\r\n/**\r\n * 외부에서 호출 가능한 메서드 노출\r\n * Expose methods for external use\r\n */\r\ndefineExpose<JDynamicTabsMethods>({\r\n addTab,\r\n closeTab,\r\n activateTab,\r\n findTab,\r\n closeAllTabs,\r\n})\r\n\r\n/**\r\n * 안전한 tabs 배열\r\n * Safe tabs array\r\n */\r\nconst safeTabs = computed(() => {\r\n return Array.isArray(tabs.value) ? tabs.value : []\r\n})\r\n\r\n/**\r\n * 탭이 있는지 여부\r\n * Whether there are tabs\r\n */\r\nconst hasTabs = computed(() => safeTabs.value.length > 0)\r\n\r\n/**\r\n * 루트 클래스\r\n * Root classes\r\n */\r\nconst rootClasses = computed(() => {\r\n const classes = ['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 * Content classes\r\n */\r\nconst contentClasses = computed(() => {\r\n const classes = []\r\n \r\n if (props.contentClassName) {\r\n classes.push(props.contentClassName)\r\n }\r\n \r\n return classes.join(' ')\r\n})\r\n</script>\r\n\r\n<template>\r\n <div :class=\"rootClasses\">\r\n <!-- 탭이 있을 경우 / When there are tabs -->\r\n <JTabs\r\n v-if=\"hasTabs\"\r\n :tabs=\"safeTabs\"\r\n :active-tab-id=\"activeTabId\"\r\n :styletype=\"props.styletype\"\r\n :class=\"contentClasses\"\r\n @tab-change=\"handleTabChange\"\r\n @tab-close=\"handleTabClose\"\r\n >\r\n <!-- 각 탭 콘텐츠 슬롯 전달 / Forward slots for each tab content -->\r\n <template\r\n v-for=\"tab in safeTabs\"\r\n :key=\"tab.id\"\r\n #[`content-${tab.id}`]=\"slotProps\"\r\n >\r\n <slot :name=\"`content-${tab.id}`\" v-bind=\"slotProps\" />\r\n </template>\r\n </JTabs>\r\n \r\n <!-- 탭이 없을 경우 / When there are no tabs -->\r\n <div\r\n v-else\r\n class=\"flex items-center justify-center h-full w-full\"\r\n >\r\n <div class=\"text-center\">\r\n <p class=\"text-muted-foreground text-lg\">{{ emptyMessage }}</p>\r\n <p class=\"text-muted-foreground/60 text-sm mt-2\">\r\n 메뉴를 클릭하여 탭을 추가하세요.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n"],"names":["props","__props","emit","__emit","tabs","ref","activeTabId","watch","newTabs","addTab","tab","t","activateTab","closeTab","id","tabIndex","newIndex","findTab","closeAllTabs","handleTabChange","handleTabClose","__expose","safeTabs","computed","hasTabs","rootClasses","classes","contentClasses","_createElementBlock","_createBlock","JTabs","_renderList","_withCtx","slotProps","_renderSlot","_ctx","_openBlock","_hoisted_1","_createElementVNode","_hoisted_2","_hoisted_3","_toDisplayString","_cache"],"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("./JDynamicTabs.vue.cjs");exports.default=e.default;
2
+ //# sourceMappingURL=JDynamicTabs.vue2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JDynamicTabs.vue2.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import f from "./JDynamicTabs.vue.js";
2
+ export {
3
+ f as default
4
+ };
5
+ //# sourceMappingURL=JDynamicTabs.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JDynamicTabs.vue2.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 i=require("../atoms/JButton.vue.cjs");require("lucide-vue-next");require("clsx");require("tailwind-merge");require("@internationalized/date");require("../shadcn/badge-variants.cjs");require("@vueuse/core");require("reka-ui");;/* empty css */require("../shadcn/avatar-variants.cjs");require("ag-grid-vue3");require("ag-grid-community");require("ag-grid-enterprise");;/* empty css */;/* empty css */;/* empty css */;/* empty css */;/* empty css */;/* empty css */;/* empty css */;/* empty css */const x=require("./JDynamicForm.vue.cjs");;/* empty css */require("vue-router");;/* empty css */;/* empty css */const h=require("../shadcn/Dialog.vue.cjs"),y=require("../shadcn/DialogContent.vue.cjs"),C=require("../shadcn/DialogHeader.vue.cjs"),V=require("../shadcn/DialogTitle.vue.cjs"),b=require("../shadcn/DialogBody.vue.cjs"),k=require("../shadcn/DialogFooter.vue.cjs"),w={class:"space-y-4"},D={key:0,class:"text-sm text-muted-foreground"},N=e.defineComponent({__name:"JFormModal",props:{open:{type:Boolean,default:!1},title:{},description:{},schema:{},modelValue:{},size:{default:"lg"},buttonType:{default:"OkCancel"},confirmText:{default:"확인"},cancelText:{default:"취소"},confirmVariant:{default:"default"},confirmDisabled:{type:Boolean,default:!1}},emits:["update:open","update:modelValue","confirm","cancel","submit","change","error"],setup(r,{expose:d,emit:s}){const o=r,l=s,a=e.ref(null),u=e.ref(o.modelValue||{}),n=e.ref(!1),m=e.computed(()=>({sm:"!max-w-sm",md:"!max-w-md",lg:"!max-w-2xl",xl:"!max-w-4xl","2xl":"!max-w-6xl",full:"!max-w-[95vw]"})[o.size]);e.watch(()=>o.modelValue,t=>{t!=null?u.value={...t}:u.value={}},{deep:!0});const f=t=>{u.value=t,l("update:modelValue",t)},v=t=>{l("change",t)},_=t=>{l("submit",t),n.value&&(l("confirm",t),n.value=!1)},p=t=>{l("error",t),n.value=!1},q=t=>{l("update:open",t)},c=()=>{n.value=!0,a.value&&a.value.submit()},g=()=>{l("cancel"),a.value&&a.value.reset()};return d({reset:()=>a.value?.reset(),submit:()=>a.value?.submit(),formState:e.computed(()=>a.value?.formState)}),(t,B)=>(e.openBlock(),e.createBlock(e.unref(h.default),{open:r.open,"onUpdate:open":q,class:e.normalizeClass(m.value)},{default:e.withCtx(()=>[e.createVNode(e.unref(y.default),null,{default:e.withCtx(()=>[r.title?(e.openBlock(),e.createBlock(e.unref(C.default),{key:0,class:"bg-muted/50 border-b"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.default),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.title),1)]),_:1})]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(b.default),{class:"max-h-[70vh] overflow-y-auto"},{default:e.withCtx(()=>[e.createElementVNode("div",w,[r.description?(e.openBlock(),e.createElementBlock("p",D,e.toDisplayString(r.description),1)):e.createCommentVNode("",!0),e.createVNode(e.unref(x.default),{ref_key:"dynamicFormRef",ref:a,schema:r.schema,"model-value":u.value,"onUpdate:modelValue":f,onSubmit:_,onChange:v,onError:p},null,8,["schema","model-value"]),e.renderSlot(t.$slots,"body")])]),_:3}),e.createVNode(e.unref(k.default),null,{default:e.withCtx(()=>[r.buttonType==="OkCancel"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(e.unref(i.default),{variant:"outline",onClick:g},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.cancelText),1)]),_:1}),e.createVNode(e.unref(i.default),{variant:r.confirmVariant,disabled:r.confirmDisabled,onClick:c},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.confirmText),1)]),_:1},8,["variant","disabled"])],64)):r.buttonType==="Ok"?(e.openBlock(),e.createBlock(e.unref(i.default),{key:1,variant:r.confirmVariant,disabled:r.confirmDisabled,onClick:c,class:"w-full"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.confirmText),1)]),_:1},8,["variant","disabled"])):e.createCommentVNode("",!0),e.renderSlot(t.$slots,"footer")]),_:3})]),_:3})]),_:3},8,["open","class"]))}});exports.default=N;
2
+ //# sourceMappingURL=JFormModal.vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JFormModal.vue.cjs","sources":["../../../../src/components/organisms/JFormModal.vue"],"sourcesContent":["<template>\r\n <Dialog\r\n :open=\"open\"\r\n @update:open=\"onOpenChange\"\r\n :class=\"sizeClass\"\r\n >\r\n <DialogContent>\r\n <!-- Header -->\r\n <DialogHeader v-if=\"title\" class=\"bg-muted/50 border-b\">\r\n <DialogTitle>\r\n {{ title }}\r\n </DialogTitle>\r\n </DialogHeader>\r\n\r\n <!-- Body -->\r\n <DialogBody class=\"max-h-[70vh] overflow-y-auto\">\r\n <div class=\"space-y-4\">\r\n <!-- Description -->\r\n <p v-if=\"description\" class=\"text-sm text-muted-foreground\">\r\n {{ description }}\r\n </p>\r\n\r\n <!-- JDynamicForm -->\r\n <JDynamicForm\r\n ref=\"dynamicFormRef\"\r\n :schema=\"schema\"\r\n :model-value=\"internalFormValue\"\r\n @update:model-value=\"handleFormChange\"\r\n @submit=\"handleFormSubmit\"\r\n @change=\"handleFieldChange\"\r\n @error=\"handleFormError\"\r\n />\r\n\r\n <!-- 커스텀 컨텐츠 슬롯 -->\r\n <slot name=\"body\" />\r\n </div>\r\n </DialogBody>\r\n\r\n <!-- Footer -->\r\n <DialogFooter>\r\n <!-- 확인/취소 버튼 -->\r\n <template v-if=\"buttonType === 'OkCancel'\">\r\n <JButton\r\n variant=\"outline\"\r\n @click=\"handleCancel\"\r\n >\r\n {{ cancelText }}\r\n </JButton>\r\n <JButton\r\n :variant=\"confirmVariant\"\r\n :disabled=\"confirmDisabled\"\r\n @click=\"handleConfirm\"\r\n >\r\n {{ confirmText }}\r\n </JButton>\r\n </template>\r\n \r\n <!-- 확인 버튼만 -->\r\n <template v-else-if=\"buttonType === 'Ok'\">\r\n <JButton\r\n :variant=\"confirmVariant\"\r\n :disabled=\"confirmDisabled\"\r\n @click=\"handleConfirm\"\r\n class=\"w-full\"\r\n >\r\n {{ confirmText }}\r\n </JButton>\r\n </template>\r\n\r\n <!-- 커스텀 푸터 슬롯 -->\r\n <slot name=\"footer\" />\r\n </DialogFooter>\r\n </DialogContent>\r\n </Dialog>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, ref, watch } from 'vue'\r\nimport {\r\n Dialog,\r\n DialogBody,\r\n DialogContent,\r\n DialogFooter,\r\n DialogHeader,\r\n DialogTitle,\r\n} from '@/components/shadcn'\r\nimport { JButton } from '@/components/atoms'\r\nimport { JDynamicForm } from '@/components/organisms'\r\nimport type { FormSchema } from '@/types/dynamic-form'\r\n\r\nexport interface JFormModalProps {\r\n // 모달 표시 여부\r\n open: boolean\r\n // 헤더\r\n title?: string\r\n description?: string\r\n // 다이나믹 폼 스키마 (필수)\r\n schema: FormSchema\r\n // 폼 값\r\n modelValue?: Record<string, any>\r\n // 모달 사이즈 (유동적)\r\n size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full'\r\n // 버튼 설정\r\n buttonType?: 'Ok' | 'OkCancel'\r\n confirmText?: string\r\n cancelText?: string\r\n confirmVariant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'\r\n confirmDisabled?: boolean\r\n}\r\n\r\nconst props = withDefaults(defineProps<JFormModalProps>(), {\r\n open: false,\r\n size: 'lg',\r\n buttonType: 'OkCancel',\r\n confirmText: '확인',\r\n cancelText: '취소',\r\n confirmVariant: 'default',\r\n confirmDisabled: false,\r\n})\r\n\r\nconst emit = defineEmits<{\r\n 'update:open': [value: boolean]\r\n 'update:modelValue': [value: Record<string, any>]\r\n 'confirm': [value: Record<string, any>]\r\n 'cancel': []\r\n 'submit': [value: Record<string, any>]\r\n 'change': [data: { field: string; value: any }]\r\n 'error': [errors: any]\r\n}>()\r\n\r\n// 다이나믹 폼 ref\r\nconst dynamicFormRef = ref<InstanceType<typeof JDynamicForm> | null>(null)\r\n\r\n// 내부 폼 값 관리\r\nconst internalFormValue = ref<Record<string, any>>(props.modelValue || {})\r\n// 확인 버튼 클릭 이후 검증 성공 시점에만 confirm 이벤트를 방출하기 위한 플래그\r\nconst isConfirming = ref<boolean>(false)\r\n\r\n// 사이즈 클래스 계산\r\nconst sizeClass = computed(() => {\r\n // Dialog.vue에 기본 max-w-lg가 하드코딩되어 있어 !max-w-*로 오버라이드\r\n const sizeMap: Record<NonNullable<JFormModalProps['size']>, string> = {\r\n 'sm': '!max-w-sm',\r\n 'md': '!max-w-md',\r\n 'lg': '!max-w-2xl',\r\n 'xl': '!max-w-4xl',\r\n '2xl': '!max-w-6xl',\r\n 'full': '!max-w-[95vw]'\r\n }\r\n return sizeMap[props.size]\r\n})\r\n\r\n// props.modelValue 변경 감지\r\nwatch(() => props.modelValue, (newValue) => {\r\n if (newValue != null) {\r\n internalFormValue.value = { ...newValue }\r\n } else {\r\n internalFormValue.value = {}\r\n }\r\n}, { deep: true })\r\n\r\n// 폼 변경 핸들러\r\nconst handleFormChange = (value: Record<string, any>) => {\r\n internalFormValue.value = value\r\n emit('update:modelValue', value)\r\n}\r\n\r\n// 필드 변경 핸들러\r\nconst handleFieldChange = (data: { field: string; value: any }) => {\r\n emit('change', data)\r\n}\r\n\r\n// 폼 제출 핸들러\r\nconst handleFormSubmit = (value: Record<string, any>) => {\r\n emit('submit', value)\r\n if (isConfirming.value) {\r\n emit('confirm', value)\r\n isConfirming.value = false\r\n }\r\n}\r\n\r\n// 폼 에러 핸들러\r\nconst handleFormError = (errors: any) => {\r\n emit('error', errors)\r\n // 검증 실패 시 confirm 방출을 차단\r\n isConfirming.value = false\r\n}\r\n\r\n// 모달 열기/닫기 핸들러\r\nconst onOpenChange = (value: boolean) => {\r\n emit('update:open', value)\r\n}\r\n\r\n// 확인 버튼 핸들러\r\nconst handleConfirm = () => {\r\n // 폼 제출 트리거 (검증 성공 시점에 handleFormSubmit에서 confirm 방출)\r\n isConfirming.value = true\r\n if (dynamicFormRef.value) {\r\n dynamicFormRef.value.submit()\r\n }\r\n}\r\n\r\n// 취소 버튼 핸들러\r\nconst handleCancel = () => {\r\n emit('cancel')\r\n // 폼 리셋\r\n if (dynamicFormRef.value) {\r\n dynamicFormRef.value.reset()\r\n }\r\n}\r\n\r\n// 외부에서 접근 가능한 메서드\r\ndefineExpose({\r\n reset: () => dynamicFormRef.value?.reset(),\r\n submit: () => dynamicFormRef.value?.submit(),\r\n formState: computed(() => dynamicFormRef.value?.formState),\r\n})\r\n</script>\r\n"],"names":["props","__props","emit","__emit","dynamicFormRef","ref","internalFormValue","isConfirming","sizeClass","computed","watch","newValue","handleFormChange","value","handleFieldChange","data","handleFormSubmit","handleFormError","errors","onOpenChange","handleConfirm","handleCancel","__expose","_createBlock","_unref","Dialog","_createVNode","DialogContent","DialogHeader","DialogTitle","DialogBody","_createElementVNode","_hoisted_1","_createElementBlock","_hoisted_2","_toDisplayString","JDynamicForm","_renderSlot","_ctx","DialogFooter","_Fragment","JButton"],"mappings":"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"}
@@ -0,0 +1,175 @@
1
+ import { defineComponent as B, ref as f, computed as b, watch as D, createBlock as p, openBlock as i, unref as a, normalizeClass as E, withCtx as o, createVNode as n, createCommentVNode as v, createTextVNode as u, toDisplayString as r, createElementVNode as N, createElementBlock as y, renderSlot as C, Fragment as O } from "vue";
2
+ import "../shadcn/index.js";
3
+ import h from "../atoms/JButton.vue.js";
4
+ import "lucide-vue-next";
5
+ import "clsx";
6
+ import "tailwind-merge";
7
+ import "@internationalized/date";
8
+ import "../shadcn/badge-variants.js";
9
+ import "@vueuse/core";
10
+ import "reka-ui";
11
+ /* empty css */
12
+ import "../shadcn/avatar-variants.js";
13
+ import "ag-grid-vue3";
14
+ import "ag-grid-community";
15
+ import "ag-grid-enterprise";
16
+ /* empty css */
17
+ /* empty css */
18
+ /* empty css */
19
+ /* empty css */
20
+ /* empty css */
21
+ /* empty css */
22
+ /* empty css */
23
+ /* empty css */
24
+ import M from "./JDynamicForm.vue.js";
25
+ /* empty css */
26
+ import "vue-router";
27
+ /* empty css */
28
+ /* empty css */
29
+ import J from "../shadcn/Dialog.vue.js";
30
+ import R from "../shadcn/DialogContent.vue.js";
31
+ import U from "../shadcn/DialogHeader.vue.js";
32
+ import _ from "../shadcn/DialogTitle.vue.js";
33
+ import j from "../shadcn/DialogBody.vue.js";
34
+ import q from "../shadcn/DialogFooter.vue.js";
35
+ const A = { class: "space-y-4" }, G = {
36
+ key: 0,
37
+ class: "text-sm text-muted-foreground"
38
+ }, Fe = /* @__PURE__ */ B({
39
+ __name: "JFormModal",
40
+ props: {
41
+ open: { type: Boolean, default: !1 },
42
+ title: {},
43
+ description: {},
44
+ schema: {},
45
+ modelValue: {},
46
+ size: { default: "lg" },
47
+ buttonType: { default: "OkCancel" },
48
+ confirmText: { default: "확인" },
49
+ cancelText: { default: "취소" },
50
+ confirmVariant: { default: "default" },
51
+ confirmDisabled: { type: Boolean, default: !1 }
52
+ },
53
+ emits: ["update:open", "update:modelValue", "confirm", "cancel", "submit", "change", "error"],
54
+ setup(t, { expose: k, emit: g }) {
55
+ const d = t, m = g, l = f(null), c = f(d.modelValue || {}), s = f(!1), V = b(() => ({
56
+ sm: "!max-w-sm",
57
+ md: "!max-w-md",
58
+ lg: "!max-w-2xl",
59
+ xl: "!max-w-4xl",
60
+ "2xl": "!max-w-6xl",
61
+ full: "!max-w-[95vw]"
62
+ })[d.size]);
63
+ D(() => d.modelValue, (e) => {
64
+ e != null ? c.value = { ...e } : c.value = {};
65
+ }, { deep: !0 });
66
+ const w = (e) => {
67
+ c.value = e, m("update:modelValue", e);
68
+ }, F = (e) => {
69
+ m("change", e);
70
+ }, T = (e) => {
71
+ m("submit", e), s.value && (m("confirm", e), s.value = !1);
72
+ }, $ = (e) => {
73
+ m("error", e), s.value = !1;
74
+ }, z = (e) => {
75
+ m("update:open", e);
76
+ }, x = () => {
77
+ s.value = !0, l.value && l.value.submit();
78
+ }, S = () => {
79
+ m("cancel"), l.value && l.value.reset();
80
+ };
81
+ return k({
82
+ reset: () => l.value?.reset(),
83
+ submit: () => l.value?.submit(),
84
+ formState: b(() => l.value?.formState)
85
+ }), (e, H) => (i(), p(a(J), {
86
+ open: t.open,
87
+ "onUpdate:open": z,
88
+ class: E(V.value)
89
+ }, {
90
+ default: o(() => [
91
+ n(a(R), null, {
92
+ default: o(() => [
93
+ t.title ? (i(), p(a(U), {
94
+ key: 0,
95
+ class: "bg-muted/50 border-b"
96
+ }, {
97
+ default: o(() => [
98
+ n(a(_), null, {
99
+ default: o(() => [
100
+ u(r(t.title), 1)
101
+ ]),
102
+ _: 1
103
+ })
104
+ ]),
105
+ _: 1
106
+ })) : v("", !0),
107
+ n(a(j), { class: "max-h-[70vh] overflow-y-auto" }, {
108
+ default: o(() => [
109
+ N("div", A, [
110
+ t.description ? (i(), y("p", G, r(t.description), 1)) : v("", !0),
111
+ n(a(M), {
112
+ ref_key: "dynamicFormRef",
113
+ ref: l,
114
+ schema: t.schema,
115
+ "model-value": c.value,
116
+ "onUpdate:modelValue": w,
117
+ onSubmit: T,
118
+ onChange: F,
119
+ onError: $
120
+ }, null, 8, ["schema", "model-value"]),
121
+ C(e.$slots, "body")
122
+ ])
123
+ ]),
124
+ _: 3
125
+ }),
126
+ n(a(q), null, {
127
+ default: o(() => [
128
+ t.buttonType === "OkCancel" ? (i(), y(O, { key: 0 }, [
129
+ n(a(h), {
130
+ variant: "outline",
131
+ onClick: S
132
+ }, {
133
+ default: o(() => [
134
+ u(r(t.cancelText), 1)
135
+ ]),
136
+ _: 1
137
+ }),
138
+ n(a(h), {
139
+ variant: t.confirmVariant,
140
+ disabled: t.confirmDisabled,
141
+ onClick: x
142
+ }, {
143
+ default: o(() => [
144
+ u(r(t.confirmText), 1)
145
+ ]),
146
+ _: 1
147
+ }, 8, ["variant", "disabled"])
148
+ ], 64)) : t.buttonType === "Ok" ? (i(), p(a(h), {
149
+ key: 1,
150
+ variant: t.confirmVariant,
151
+ disabled: t.confirmDisabled,
152
+ onClick: x,
153
+ class: "w-full"
154
+ }, {
155
+ default: o(() => [
156
+ u(r(t.confirmText), 1)
157
+ ]),
158
+ _: 1
159
+ }, 8, ["variant", "disabled"])) : v("", !0),
160
+ C(e.$slots, "footer")
161
+ ]),
162
+ _: 3
163
+ })
164
+ ]),
165
+ _: 3
166
+ })
167
+ ]),
168
+ _: 3
169
+ }, 8, ["open", "class"]));
170
+ }
171
+ });
172
+ export {
173
+ Fe as default
174
+ };
175
+ //# sourceMappingURL=JFormModal.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JFormModal.vue.js","sources":["../../../../src/components/organisms/JFormModal.vue"],"sourcesContent":["<template>\r\n <Dialog\r\n :open=\"open\"\r\n @update:open=\"onOpenChange\"\r\n :class=\"sizeClass\"\r\n >\r\n <DialogContent>\r\n <!-- Header -->\r\n <DialogHeader v-if=\"title\" class=\"bg-muted/50 border-b\">\r\n <DialogTitle>\r\n {{ title }}\r\n </DialogTitle>\r\n </DialogHeader>\r\n\r\n <!-- Body -->\r\n <DialogBody class=\"max-h-[70vh] overflow-y-auto\">\r\n <div class=\"space-y-4\">\r\n <!-- Description -->\r\n <p v-if=\"description\" class=\"text-sm text-muted-foreground\">\r\n {{ description }}\r\n </p>\r\n\r\n <!-- JDynamicForm -->\r\n <JDynamicForm\r\n ref=\"dynamicFormRef\"\r\n :schema=\"schema\"\r\n :model-value=\"internalFormValue\"\r\n @update:model-value=\"handleFormChange\"\r\n @submit=\"handleFormSubmit\"\r\n @change=\"handleFieldChange\"\r\n @error=\"handleFormError\"\r\n />\r\n\r\n <!-- 커스텀 컨텐츠 슬롯 -->\r\n <slot name=\"body\" />\r\n </div>\r\n </DialogBody>\r\n\r\n <!-- Footer -->\r\n <DialogFooter>\r\n <!-- 확인/취소 버튼 -->\r\n <template v-if=\"buttonType === 'OkCancel'\">\r\n <JButton\r\n variant=\"outline\"\r\n @click=\"handleCancel\"\r\n >\r\n {{ cancelText }}\r\n </JButton>\r\n <JButton\r\n :variant=\"confirmVariant\"\r\n :disabled=\"confirmDisabled\"\r\n @click=\"handleConfirm\"\r\n >\r\n {{ confirmText }}\r\n </JButton>\r\n </template>\r\n \r\n <!-- 확인 버튼만 -->\r\n <template v-else-if=\"buttonType === 'Ok'\">\r\n <JButton\r\n :variant=\"confirmVariant\"\r\n :disabled=\"confirmDisabled\"\r\n @click=\"handleConfirm\"\r\n class=\"w-full\"\r\n >\r\n {{ confirmText }}\r\n </JButton>\r\n </template>\r\n\r\n <!-- 커스텀 푸터 슬롯 -->\r\n <slot name=\"footer\" />\r\n </DialogFooter>\r\n </DialogContent>\r\n </Dialog>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, ref, watch } from 'vue'\r\nimport {\r\n Dialog,\r\n DialogBody,\r\n DialogContent,\r\n DialogFooter,\r\n DialogHeader,\r\n DialogTitle,\r\n} from '@/components/shadcn'\r\nimport { JButton } from '@/components/atoms'\r\nimport { JDynamicForm } from '@/components/organisms'\r\nimport type { FormSchema } from '@/types/dynamic-form'\r\n\r\nexport interface JFormModalProps {\r\n // 모달 표시 여부\r\n open: boolean\r\n // 헤더\r\n title?: string\r\n description?: string\r\n // 다이나믹 폼 스키마 (필수)\r\n schema: FormSchema\r\n // 폼 값\r\n modelValue?: Record<string, any>\r\n // 모달 사이즈 (유동적)\r\n size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full'\r\n // 버튼 설정\r\n buttonType?: 'Ok' | 'OkCancel'\r\n confirmText?: string\r\n cancelText?: string\r\n confirmVariant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'\r\n confirmDisabled?: boolean\r\n}\r\n\r\nconst props = withDefaults(defineProps<JFormModalProps>(), {\r\n open: false,\r\n size: 'lg',\r\n buttonType: 'OkCancel',\r\n confirmText: '확인',\r\n cancelText: '취소',\r\n confirmVariant: 'default',\r\n confirmDisabled: false,\r\n})\r\n\r\nconst emit = defineEmits<{\r\n 'update:open': [value: boolean]\r\n 'update:modelValue': [value: Record<string, any>]\r\n 'confirm': [value: Record<string, any>]\r\n 'cancel': []\r\n 'submit': [value: Record<string, any>]\r\n 'change': [data: { field: string; value: any }]\r\n 'error': [errors: any]\r\n}>()\r\n\r\n// 다이나믹 폼 ref\r\nconst dynamicFormRef = ref<InstanceType<typeof JDynamicForm> | null>(null)\r\n\r\n// 내부 폼 값 관리\r\nconst internalFormValue = ref<Record<string, any>>(props.modelValue || {})\r\n// 확인 버튼 클릭 이후 검증 성공 시점에만 confirm 이벤트를 방출하기 위한 플래그\r\nconst isConfirming = ref<boolean>(false)\r\n\r\n// 사이즈 클래스 계산\r\nconst sizeClass = computed(() => {\r\n // Dialog.vue에 기본 max-w-lg가 하드코딩되어 있어 !max-w-*로 오버라이드\r\n const sizeMap: Record<NonNullable<JFormModalProps['size']>, string> = {\r\n 'sm': '!max-w-sm',\r\n 'md': '!max-w-md',\r\n 'lg': '!max-w-2xl',\r\n 'xl': '!max-w-4xl',\r\n '2xl': '!max-w-6xl',\r\n 'full': '!max-w-[95vw]'\r\n }\r\n return sizeMap[props.size]\r\n})\r\n\r\n// props.modelValue 변경 감지\r\nwatch(() => props.modelValue, (newValue) => {\r\n if (newValue != null) {\r\n internalFormValue.value = { ...newValue }\r\n } else {\r\n internalFormValue.value = {}\r\n }\r\n}, { deep: true })\r\n\r\n// 폼 변경 핸들러\r\nconst handleFormChange = (value: Record<string, any>) => {\r\n internalFormValue.value = value\r\n emit('update:modelValue', value)\r\n}\r\n\r\n// 필드 변경 핸들러\r\nconst handleFieldChange = (data: { field: string; value: any }) => {\r\n emit('change', data)\r\n}\r\n\r\n// 폼 제출 핸들러\r\nconst handleFormSubmit = (value: Record<string, any>) => {\r\n emit('submit', value)\r\n if (isConfirming.value) {\r\n emit('confirm', value)\r\n isConfirming.value = false\r\n }\r\n}\r\n\r\n// 폼 에러 핸들러\r\nconst handleFormError = (errors: any) => {\r\n emit('error', errors)\r\n // 검증 실패 시 confirm 방출을 차단\r\n isConfirming.value = false\r\n}\r\n\r\n// 모달 열기/닫기 핸들러\r\nconst onOpenChange = (value: boolean) => {\r\n emit('update:open', value)\r\n}\r\n\r\n// 확인 버튼 핸들러\r\nconst handleConfirm = () => {\r\n // 폼 제출 트리거 (검증 성공 시점에 handleFormSubmit에서 confirm 방출)\r\n isConfirming.value = true\r\n if (dynamicFormRef.value) {\r\n dynamicFormRef.value.submit()\r\n }\r\n}\r\n\r\n// 취소 버튼 핸들러\r\nconst handleCancel = () => {\r\n emit('cancel')\r\n // 폼 리셋\r\n if (dynamicFormRef.value) {\r\n dynamicFormRef.value.reset()\r\n }\r\n}\r\n\r\n// 외부에서 접근 가능한 메서드\r\ndefineExpose({\r\n reset: () => dynamicFormRef.value?.reset(),\r\n submit: () => dynamicFormRef.value?.submit(),\r\n formState: computed(() => dynamicFormRef.value?.formState),\r\n})\r\n</script>\r\n"],"names":["props","__props","emit","__emit","dynamicFormRef","ref","internalFormValue","isConfirming","sizeClass","computed","watch","newValue","handleFormChange","value","handleFieldChange","data","handleFormSubmit","handleFormError","errors","onOpenChange","handleConfirm","handleCancel","__expose","_createBlock","_unref","Dialog","_createVNode","DialogContent","DialogHeader","DialogTitle","DialogBody","_createElementVNode","_hoisted_1","_createElementBlock","_hoisted_2","_toDisplayString","JDynamicForm","_renderSlot","_ctx","DialogFooter","_Fragment","JButton"],"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("./JFormModal.vue.cjs");exports.default=e.default;
2
+ //# sourceMappingURL=JFormModal.vue2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JFormModal.vue2.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import f from "./JFormModal.vue.js";
2
+ export {
3
+ f as default
4
+ };
5
+ //# sourceMappingURL=JFormModal.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JFormModal.vue2.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"),u=require("../atoms/JIcon.vue.cjs"),K=require("../atoms/JAvatar.vue.cjs"),g=require("../atoms/JButton.vue.cjs"),N=require("../atoms/JPopover.vue.cjs"),v=require("../../lib/utils.cjs"),r=require("../../lib/theme-utils.cjs"),z=require("../../assets/images/logo-fallback.png.cjs"),W={class:"flex items-center gap-6 flex-1"},H=["src"],Q={key:1,class:"text-lg font-bold text-foreground"},X={key:2,class:"flex items-center gap-1"},Z={class:"flex items-center gap-3"},ee={class:"p-2 min-w-[200px]"},te={class:"space-y-1"},oe=["onClick"],le={key:1,class:"w-4"},ne={class:"flex-1 capitalize"},ae={key:0,class:"absolute top-0 right-0 h-4 w-4 rounded-full bg-destructive text-destructive-foreground text-xs flex items-center justify-center"},se={class:"p-2"},re={key:0,class:"max-h-96 overflow-y-auto space-y-1"},ce=["onClick"],ie={class:"flex items-start gap-2"},de={class:"flex-1 min-w-0"},ue={class:"text-sm font-medium text-foreground"},me={key:0,class:"text-xs text-muted-foreground mt-1"},fe={key:1,class:"text-xs text-muted-foreground/60 mt-1"},he={key:1,class:"p-4 text-center text-sm text-muted-foreground"},ke={class:"flex items-center gap-2 cursor-pointer hover:opacity-80 transition-opacity"},ge={class:"text-sm text-foreground hidden sm:inline"},ve={class:"w-full rounded-md overflow-hidden"},pe={class:"px-3 py-2 border-b border-border"},xe={class:"text-sm font-medium text-foreground"},ye={key:0,class:"text-xs text-muted-foreground mt-0.5"},be=["disabled","onClick"],Be={class:"flex-1 text-left truncate"},_e={key:1,class:"h-px bg-muted my-1"},Ce={key:0,class:"h-px bg-muted my-1"},Te=e.defineComponent({__name:"JHeader",props:{logo:{},logoText:{default:"JWMS Portal"},navItems:{},showNotifications:{type:Boolean,default:!1},notifications:{default:()=>[]},userAvatar:{},userName:{},isLoggedIn:{type:Boolean},userEmail:{},userId:{},styletype:{default:"default"},showSidebarToggle:{type:Boolean,default:!0},isSidebarOpen:{type:Boolean,default:!0},showThemeSelector:{type:Boolean,default:!0},defaultTheme:{default:void 0},availableThemes:{default:void 0}},emits:["logoClick","navClick","notificationClick","userMenuSelect","sidebarToggle","login"],setup(l,{emit:L}){const d=l,f=L,S={default:{containerClass:"h-14 px-4 border-b border-border bg-background",navItemClass:"text-sm text-muted-foreground hover:text-foreground transition-colors px-3 py-2 rounded-md hover:bg-accent",navItemActiveClass:"text-foreground font-medium bg-accent"},minimal:{containerClass:"h-12 px-3 border-b border-border bg-background",navItemClass:"text-xs text-muted-foreground hover:text-foreground transition-colors px-2 py-1 rounded-md hover:bg-accent",navItemActiveClass:"text-foreground font-medium bg-accent"}},B=e.computed(()=>S[d.styletype]??S.default),h=e.ref(0),D=e.computed(()=>{if(d.logo)return d.logo}),_=e.computed(()=>{if(d.logo)return h.value>=1&&z.default?z.default:D.value}),O=()=>{h.value===0?h.value=1:h.value===1&&(h.value=2)},C=e.computed(()=>d.notifications?.filter(o=>!o.read).length||0),M=[{id:"profile",label:"프로필",icon:"user"},{id:"settings",label:"설정",icon:"settings"},{id:"separator",label:"",separator:!0},{id:"logout",label:"로그아웃",icon:"logOut"}],V=e.computed(()=>[{items:M}]),A=()=>{f("logoClick")},F=(o,a)=>{o.onClick?.(),f("navClick",o,a)},q=o=>{o.onClick?.(),f("notificationClick",o)},G=o=>{f("userMenuSelect",o)},J=()=>{f("login")},U=()=>{f("sidebarToggle")},m=e.ref(!1),k=e.ref(r.getDefaultTheme()),p=e.ref([]);let x=!1,y=null,b=null;const I=()=>typeof window>"u"?!1:!!(window.location?.href?.includes("storybook")||window.__STORYBOOK_GLOBALS__),T=()=>{const o=r.detectThemeClasses(),a=r.ensureDefaultTheme(o);if(d.availableThemes&&d.availableThemes.length>0){const t=a.filter(n=>d.availableThemes.includes(n));p.value=r.ensureDefaultTheme(t)}else p.value=a},$=()=>{if(typeof window>"u")return"light";const o=localStorage.getItem("theme");return o==="dark"||o==="light"?o:window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"},E=o=>{x=!0;const a=document.documentElement;o==="dark"?(a.classList.add("dark"),m.value=!0):(a.classList.remove("dark"),m.value=!1),localStorage.setItem("theme",o),x=!1},P=()=>{const o=m.value?"light":"dark";E(o)},R=()=>{if(d.defaultTheme)return r.validateThemeExists(d.defaultTheme);const o=r.getStoredTheme("tweakcn-theme");return o?r.validateThemeExists(o):r.getDefaultTheme()},w=o=>{x=!0;const a=r.validateThemeExists(o),t=r.applyTheme(a);if(t){if(k.value=a,r.setStoredTheme(a,"tweakcn-theme"),I())try{const n=window.__STORYBOOK_GLOBALS__;n&&(n.theme=a)}catch{}}else{const n=r.getDefaultTheme();r.applyTheme(n),k.value=n,r.setStoredTheme(n,"tweakcn-theme")}return x=!1,t},Y=o=>{w(String(o))},j=e.computed(()=>m.value?"sun":"moon");return e.onMounted(()=>{T();const o=$();E(o);const a=R();w(a);const t=document.documentElement;m.value=t.classList.contains("dark"),y=new MutationObserver(()=>{if(x)return;const s=t.classList.contains("dark");s!==m.value&&(m.value=s,localStorage.setItem("theme",s?"dark":"light")),T();const c=Array.from(t.classList).find(i=>i.startsWith("theme-"));if(c){const i=c.replace("theme-","");p.value.includes(i)&&(k.value=i)}}),y.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),b=new MutationObserver(()=>{T()}),b.observe(document.head,{childList:!0,subtree:!0});let n=null;if(I()){const s=()=>{try{const c=window.__STORYBOOK_GLOBALS__;if(c){if(typeof c.darkMode<"u"){const i=c.darkMode;i!==m.value&&E(i?"dark":"light")}if(c.theme&&c.theme!==k.value){const i=String(c.theme);p.value.includes(i)&&w(i)}}}catch{}};s(),n=setInterval(s,500)}e.onUnmounted(()=>{y&&(y.disconnect(),y=null),b&&(b.disconnect(),b=null),n&&clearInterval(n)})}),(o,a)=>(e.openBlock(),e.createElementBlock("header",{class:e.normalizeClass(e.unref(v.cn)("flex items-center justify-between w-full",B.value.containerClass))},[e.createElementVNode("div",W,[l.showSidebarToggle?(e.openBlock(),e.createBlock(g.default,{key:0,variant:"ghost",size:"icon",class:"flex-shrink-0","aria-label":"사이드바 토글",onClick:U},{default:e.withCtx(()=>[e.createVNode(u.default,{name:"menu",size:"md"})]),_:1})):e.createCommentVNode("",!0),_.value||l.logoText?(e.openBlock(),e.createElementBlock("div",{key:1,class:"flex items-center cursor-pointer",onClick:A},[_.value&&h.value<2?(e.openBlock(),e.createElementBlock("img",{key:0,src:_.value,alt:"로고",class:"h-8 w-auto",onError:O},null,40,H)):l.logoText?(e.openBlock(),e.createElementBlock("span",Q,e.toDisplayString(l.logoText),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),l.navItems&&l.navItems.length>0?(e.openBlock(),e.createElementBlock("nav",X,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.navItems,(t,n)=>(e.openBlock(),e.createBlock(g.default,{key:n,variant:"ghost",class:e.normalizeClass(e.unref(v.cn)(B.value.navItemClass,t.active&&B.value.navItemActiveClass)),onClick:s=>F(t,n)},{default:e.withCtx(()=>[t.icon?(e.openBlock(),e.createBlock(u.default,{key:0,name:t.icon,size:"sm",class:"mr-1.5"},null,8,["name"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(t.label),1)]),_:2},1032,["class","onClick"]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Z,[l.showThemeSelector?(e.openBlock(),e.createBlock(N.default,{key:0,position:"bottom",align:"end",styletype:"default-sm"},{trigger:e.withCtx(()=>[e.createVNode(g.default,{variant:"ghost",size:"icon","aria-label":"테마 선택"},{default:e.withCtx(()=>[e.createVNode(u.default,{name:"palette",size:"md"})]),_:1})]),default:e.withCtx(()=>[e.createElementVNode("div",ee,[a[0]||(a[0]=e.createElementVNode("div",{class:"text-xs font-medium text-muted-foreground px-2 py-1.5 mb-1"}," 테마 선택 ",-1)),e.createElementVNode("div",te,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,t=>(e.openBlock(),e.createElementBlock("button",{key:t,class:e.normalizeClass(e.unref(v.cn)("w-full flex items-center gap-2 px-2 py-1.5 text-sm rounded-md transition-colors","hover:bg-accent hover:text-accent-foreground","border-0 outline-none text-left",k.value===t&&"bg-accent text-accent-foreground font-medium")),onClick:n=>Y(t)},[k.value===t?(e.openBlock(),e.createBlock(u.default,{key:0,name:"check",size:"sm",class:"flex-shrink-0"})):(e.openBlock(),e.createElementBlock("span",le)),e.createElementVNode("span",ne,e.toDisplayString(t),1)],10,oe))),128))])])]),_:1})):e.createCommentVNode("",!0),l.showNotifications?(e.openBlock(),e.createBlock(N.default,{key:1,position:"bottom",align:"end",styletype:"default-sm"},{trigger:e.withCtx(()=>[e.createVNode(g.default,{variant:"ghost",size:"icon",class:"relative","aria-label":"알림"},{default:e.withCtx(()=>[e.createVNode(u.default,{name:"circleAlert",size:"md"}),C.value>0?(e.openBlock(),e.createElementBlock("span",ae,e.toDisplayString(C.value>9?"9+":C.value),1)):e.createCommentVNode("",!0)]),_:1})]),default:e.withCtx(()=>[e.createElementVNode("div",se,[l.notifications&&l.notifications.length>0?(e.openBlock(),e.createElementBlock("div",re,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.notifications,t=>(e.openBlock(),e.createElementBlock("div",{key:t.id,class:e.normalizeClass(e.unref(v.cn)("p-3 rounded-md cursor-pointer transition-colors",t.read?"hover:bg-accent/50":"bg-accent")),onClick:n=>q(t)},[e.createElementVNode("div",ie,[t.icon?(e.openBlock(),e.createBlock(u.default,{key:0,name:t.icon,size:"sm",class:"mt-0.5 flex-shrink-0"},null,8,["name"])):e.createCommentVNode("",!0),e.createElementVNode("div",de,[e.createElementVNode("p",ue,e.toDisplayString(t.title),1),t.message?(e.openBlock(),e.createElementBlock("p",me,e.toDisplayString(t.message),1)):e.createCommentVNode("",!0),t.time?(e.openBlock(),e.createElementBlock("p",fe,e.toDisplayString(t.time),1)):e.createCommentVNode("",!0)])])],10,ce))),128))])):(e.openBlock(),e.createElementBlock("div",he," 알림이 없습니다. "))])]),_:1})):e.createCommentVNode("",!0),e.createVNode(g.default,{variant:"ghost",size:"icon","aria-label":m.value?"라이트 모드로 전환":"다크 모드로 전환",onClick:P},{default:e.withCtx(()=>[e.createVNode(u.default,{name:j.value,size:"md"},null,8,["name"])]),_:1},8,["aria-label"]),l.userName?(e.openBlock(),e.createBlock(N.default,{key:2,position:"bottom",align:"end",styletype:"default-sm"},{trigger:e.withCtx(()=>[e.createElementVNode("div",ke,[e.createVNode(K.default,{src:l.userAvatar,fallback:l.userName?l.userName[0]:"U",size:"sm"},null,8,["src","fallback"]),e.createElementVNode("span",ge,e.toDisplayString(l.userName),1),e.createVNode(u.default,{name:"chevronDown",size:"sm",class:"text-muted-foreground hidden sm:inline"})])]),default:e.withCtx(()=>[e.createElementVNode("div",ve,[e.createElementVNode("div",pe,[e.createElementVNode("p",xe,e.toDisplayString(l.userName),1),l.userEmail?(e.openBlock(),e.createElementBlock("p",ye,e.toDisplayString(l.userEmail),1)):e.createCommentVNode("",!0)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,(t,n)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:n},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(s,c)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:s.id},[s.separator?s.separator&&c>0?(e.openBlock(),e.createElementBlock("div",_e)):e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,disabled:s.disabled,class:e.normalizeClass(e.unref(v.cn)("w-full flex items-center gap-2 px-3 py-1.5 text-sm transition-colors",s.id==="logout"?"text-destructive hover:bg-destructive/10 hover:text-destructive":"hover:bg-accent hover:text-accent-foreground","disabled:opacity-50 disabled:pointer-events-none","border-0 outline-none",t.items[c+1]?.separator&&"border-b-0")),onClick:i=>G(s.id)},[s.icon?(e.openBlock(),e.createBlock(u.default,{key:0,name:s.icon,size:"sm",class:e.normalizeClass(e.unref(v.cn)("flex-shrink-0",s.id==="logout"&&"text-destructive"))},null,8,["name","class"])):e.createCommentVNode("",!0),e.createElementVNode("span",Be,e.toDisplayString(s.label),1)],10,be))],64))),128)),n<V.value.length-1?(e.openBlock(),e.createElementBlock("div",Ce)):e.createCommentVNode("",!0)],64))),128))])]),_:1})):(e.openBlock(),e.createBlock(g.default,{key:3,variant:"ghost",size:"sm","aria-label":"로그인",onClick:J},{default:e.withCtx(()=>[e.createVNode(u.default,{name:"logIn",size:"sm",class:"sm:mr-1.5"}),a[1]||(a[1]=e.createElementVNode("span",{class:"hidden sm:inline"},"로그인",-1))]),_:1})),e.renderSlot(o.$slots,"actions")])],2))}});exports.default=Te;
2
+ //# sourceMappingURL=JHeader.vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JHeader.vue.cjs","sources":["../../../../src/components/organisms/JHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, ref, onMounted, onUnmounted } from 'vue'\r\nimport JIcon from '@/components/atoms/JIcon.vue'\r\nimport JAvatar from '@/components/atoms/JAvatar.vue'\r\nimport JButton from '@/components/atoms/JButton.vue'\r\nimport JPopover from '@/components/atoms/JPopover.vue'\r\nimport { cn } from '@/lib/utils'\r\nimport type { ContextMenuItem, ContextMenuGroup } from '@/types/context-menu.types'\r\nimport {\r\n detectThemeClasses,\r\n ensureDefaultTheme,\r\n validateThemeExists,\r\n getDefaultTheme,\r\n getStoredTheme,\r\n setStoredTheme,\r\n applyTheme,\r\n} from '@/lib/theme-utils'\r\n\r\n// Fallback 로고 이미지 import (logo prop이 없거나 로드 실패 시 사용)\r\nimport logoFallback from '@/assets/images/logo-fallback.png'\r\n\r\n/**\r\n * JHeader - 상단 헤더 컴포넌트 (organisms)\r\n * Header Component\r\n * \r\n * @description\r\n * 애플리케이션의 상단 헤더 영역을 담당하는 컴포넌트입니다.\r\n * 로고, 네비게이션, 검색, 알림, 사용자 메뉴 등을 포함할 수 있습니다.\r\n * \r\n * @example\r\n * ```vue\r\n * <JHeader\r\n * logo=\"/logo.png\"\r\n * :user-menu-items=\"userMenuItems\"\r\n * @logo-click=\"handleLogoClick\"\r\n * />\r\n * ```\r\n */\r\n\r\nexport type HeaderNavItem = {\r\n /** 라벨 */\r\n label: string\r\n /** 링크 URL */\r\n href?: string\r\n /** 아이콘 */\r\n icon?: string\r\n /** 활성 상태 */\r\n active?: boolean\r\n /** 클릭 핸들러 */\r\n onClick?: () => void\r\n}\r\n\r\nexport type NotificationItem = {\r\n /** 알림 ID */\r\n id: string\r\n /** 알림 제목 */\r\n title: string\r\n /** 알림 내용 */\r\n message?: string\r\n /** 알림 시간 */\r\n time?: string\r\n /** 읽음 상태 */\r\n read?: boolean\r\n /** 아이콘 */\r\n icon?: string\r\n /** 클릭 핸들러 */\r\n onClick?: () => void\r\n}\r\n\r\ntype StyleType =\r\n | 'default' // 기본 스타일\r\n | 'minimal' // 최소 스타일\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n /** 로고 이미지 URL */\r\n logo?: string\r\n /** 로고 텍스트 (기본값, 이미지가 없을 때) */\r\n logoText?: string\r\n /** 네비게이션 아이템 목록 */\r\n navItems?: HeaderNavItem[]\r\n /** 알림 표시 여부 */\r\n showNotifications?: boolean\r\n /** 알림 목록 */\r\n notifications?: NotificationItem[]\r\n /** 사용자 아바타 이미지 */\r\n userAvatar?: string\r\n /** 사용자 이름 */\r\n userName?: string\r\n /** 로그인 상태 */\r\n isLoggedIn?: boolean\r\n /** 사용자 이메일 */\r\n userEmail?: string\r\n /** 사용자 ID */\r\n userId?: string\r\n /** 스타일 타입 */\r\n styletype?: StyleType\r\n /** 사이드바 토글 버튼 표시 여부 */\r\n showSidebarToggle?: boolean\r\n /** 사이드바 열림 상태 */\r\n isSidebarOpen?: boolean\r\n /** 테마 선택기 표시 여부 */\r\n showThemeSelector?: boolean\r\n /** 초기 테마 (기본값: 'default' 또는 저장된 테마) */\r\n defaultTheme?: string\r\n /** 선택 가능한 테마 목록 (지정하지 않으면 모든 감지된 테마 사용) */\r\n availableThemes?: string[]\r\n }>(),\r\n {\r\n logoText: 'JWMS Portal', // 기본값: 텍스트 로고\r\n showNotifications: false,\r\n notifications: () => [],\r\n styletype: 'default',\r\n showSidebarToggle: true,\r\n isSidebarOpen: true,\r\n showThemeSelector: true,\r\n defaultTheme: undefined,\r\n availableThemes: undefined,\r\n }\r\n)\r\n\r\nconst emit = defineEmits<{\r\n /** 로고 클릭 이벤트 */\r\n logoClick: []\r\n /** 네비게이션 아이템 클릭 이벤트 */\r\n navClick: [item: HeaderNavItem, index: number]\r\n /** 알림 클릭 이벤트 */\r\n notificationClick: [item: NotificationItem]\r\n /** 사용자 메뉴 아이템 선택 이벤트 */\r\n userMenuSelect: [itemId: string]\r\n /** 사이드바 토글 이벤트 */\r\n sidebarToggle: []\r\n /** 로그인 버튼 클릭 이벤트 */\r\n login: []\r\n}>()\r\n\r\n/**\r\n * 스타일 프리셋\r\n */\r\nconst STYLE_PRESETS: Record<StyleType, {\r\n containerClass: string\r\n navItemClass: string\r\n navItemActiveClass: string\r\n}> = {\r\n default: {\r\n containerClass: 'h-14 px-4 border-b border-border bg-background',\r\n navItemClass: 'text-sm text-muted-foreground hover:text-foreground transition-colors px-3 py-2 rounded-md hover:bg-accent',\r\n navItemActiveClass: 'text-foreground font-medium bg-accent',\r\n },\r\n minimal: {\r\n containerClass: 'h-12 px-3 border-b border-border bg-background',\r\n navItemClass: 'text-xs text-muted-foreground hover:text-foreground transition-colors px-2 py-1 rounded-md hover:bg-accent',\r\n navItemActiveClass: 'text-foreground font-medium bg-accent',\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 * 0: 에러 없음, 1: 첫 번째 이미지(logo) 에러, 2: fallback 이미지도 에러\r\n */\r\nconst logoImageError = ref(0)\r\n\r\n/**\r\n * 로고 이미지 경로 계산\r\n */\r\nconst logoImageSrc = computed(() => {\r\n // props.logo가 있으면 사용\r\n if (props.logo) {\r\n return props.logo\r\n }\r\n return undefined\r\n})\r\n\r\n/**\r\n * 실제 표시할 로고 이미지 경로\r\n * 1. props.logo가 있으면 사용\r\n * 2. logo 에러 시 fallback 이미지\r\n * 3. fallback도 에러면 undefined (텍스트로 대체)\r\n */\r\nconst displayLogoImage = computed(() => {\r\n // logo prop이 없으면 이미지 표시 안함 (텍스트 사용)\r\n if (!props.logo) {\r\n return undefined\r\n }\r\n \r\n // logo 에러가 발생했으면 fallback 사용\r\n if (logoImageError.value >= 1 && logoFallback) {\r\n return logoFallback\r\n }\r\n \r\n // 정상적으로 logo 사용\r\n return logoImageSrc.value\r\n})\r\n\r\n/**\r\n * 로고 이미지 로드 에러 핸들러\r\n */\r\nconst handleLogoError = () => {\r\n // 첫 번째 이미지(logo) 에러\r\n if (logoImageError.value === 0) {\r\n logoImageError.value = 1\r\n }\r\n // fallback 이미지도 에러면 2로 설정 (텍스트로 대체)\r\n else if (logoImageError.value === 1) {\r\n logoImageError.value = 2\r\n }\r\n}\r\n\r\n/**\r\n * 읽지 않은 알림 개수\r\n */\r\nconst unreadCount = computed(() => {\r\n return props.notifications?.filter(n => !n.read).length || 0\r\n})\r\n\r\n/**\r\n * 고정 사용자 메뉴 아이템\r\n */\r\nconst fixedUserMenuItems: ContextMenuItem[] = [\r\n { id: 'profile', label: '프로필', icon: 'user' },\r\n { id: 'settings', label: '설정', icon: 'settings' },\r\n { id: 'separator', label: '', separator: true },\r\n { id: 'logout', label: '로그아웃', icon: 'logOut' },\r\n]\r\n\r\n/**\r\n * 사용자 메뉴 아이템을 ContextMenuGroup 형식으로 변환\r\n */\r\nconst userMenuGroups = computed<ContextMenuGroup[]>(() => {\r\n return [{\r\n items: fixedUserMenuItems\r\n }]\r\n})\r\n\r\n/**\r\n * 로고 클릭 핸들러\r\n */\r\nconst handleLogoClick = () => {\r\n emit('logoClick')\r\n}\r\n\r\n/**\r\n * 네비게이션 아이템 클릭 핸들러\r\n */\r\nconst handleNavClick = (item: HeaderNavItem, index: number) => {\r\n item.onClick?.()\r\n emit('navClick', item, index)\r\n}\r\n\r\n/**\r\n * 알림 클릭 핸들러\r\n */\r\nconst handleNotificationClick = (item: NotificationItem) => {\r\n item.onClick?.()\r\n emit('notificationClick', item)\r\n}\r\n\r\n/**\r\n * 사용자 메뉴 선택 핸들러\r\n */\r\nconst handleUserMenuSelect = (itemId: string) => {\r\n emit('userMenuSelect', itemId)\r\n}\r\n\r\n/**\r\n * 로그인 버튼 클릭 핸들러\r\n */\r\nconst handleLogin = () => {\r\n emit('login')\r\n}\r\n\r\n/**\r\n * 사이드바 토글 핸들러\r\n */\r\nconst handleSidebarToggle = () => {\r\n emit('sidebarToggle')\r\n}\r\n\r\n/**\r\n * tweakcn 테마 타입 정의 (동적 감지 지원)\r\n */\r\ntype ThemeName = string\r\n\r\n/**\r\n * 다크모드 상태를 추적하는 반응형 변수\r\n * - false: 라이트 모드\r\n * - true: 다크 모드\r\n * 초기값은 false(라이트 모드)이며, 컴포넌트 마운트 시 실제 테마로 업데이트됩니다.\r\n */\r\nconst isDarkMode = ref(false)\r\n\r\n/**\r\n * 현재 선택된 tweakcn 테마 (디폴트 테마로 초기화)\r\n */\r\nconst currentTheme = ref<ThemeName>(getDefaultTheme())\r\n\r\n/**\r\n * 테마 옵션 목록 (동적으로 감지)\r\n */\r\nconst themeOptions = ref<ThemeName[]>([])\r\n\r\n/**\r\n * 내부 업데이트 플래그\r\n * - true: 컴포넌트 내부에서 테마를 변경 중 (MutationObserver가 무시해야 함)\r\n * - false: 외부에서 테마가 변경됨 (MutationObserver가 동기화해야 함)\r\n */\r\nlet isInternalUpdate = false\r\n\r\n/**\r\n * MutationObserver 인스턴스\r\n */\r\nlet themeObserver: MutationObserver | null = null\r\nlet styleObserver: MutationObserver | null = null\r\n\r\n/**\r\n * Storybook 환경인지 확인하는 함수\r\n * \r\n * @returns Storybook 환경이면 true, 아니면 false\r\n */\r\nconst isStorybook = (): boolean => {\r\n if (typeof window === 'undefined') return false\r\n return !!(\r\n window.location?.href?.includes('storybook') ||\r\n (window as any).__STORYBOOK_GLOBALS__\r\n )\r\n}\r\n\r\n/**\r\n * 테마 목록을 동적으로 감지하고 업데이트합니다.\r\n */\r\nconst updateThemeOptions = () => {\r\n const detectedThemes = detectThemeClasses()\r\n const ensuredThemes = ensureDefaultTheme(detectedThemes)\r\n \r\n // availableThemes prop이 지정되면 필터링\r\n if (props.availableThemes && props.availableThemes.length > 0) {\r\n const filtered = ensuredThemes.filter(theme => props.availableThemes!.includes(theme))\r\n // default는 항상 포함\r\n themeOptions.value = ensureDefaultTheme(filtered)\r\n } else {\r\n themeOptions.value = ensuredThemes\r\n }\r\n}\r\n\r\n/**\r\n * localStorage에서 저장된 다크모드 테마를 읽어오는 함수\r\n * \r\n * 우선순위:\r\n * 1. localStorage에 저장된 'theme' 값 (사용자가 이전에 선택한 테마)\r\n * 2. 시스템 설정 (OS의 다크모드 설정)\r\n * 3. 기본값 'light' (라이트 모드)\r\n * \r\n * @returns 'light' | 'dark' - 적용할 테마\r\n */\r\nconst getStoredDarkModeTheme = (): 'light' | 'dark' => {\r\n if (typeof window === 'undefined') return 'light'\r\n \r\n const stored = localStorage.getItem('theme')\r\n if (stored === 'dark' || stored === 'light') {\r\n return stored\r\n }\r\n \r\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\r\n return 'dark'\r\n }\r\n \r\n return 'light'\r\n}\r\n\r\n/**\r\n * 다크모드 테마를 HTML 문서에 적용하는 함수\r\n * \r\n * @param theme - 적용할 테마 ('light' 또는 'dark')\r\n */\r\nconst applyDarkModeTheme = (theme: 'light' | 'dark') => {\r\n isInternalUpdate = true\r\n \r\n const root = document.documentElement\r\n \r\n if (theme === 'dark') {\r\n root.classList.add('dark')\r\n isDarkMode.value = true\r\n } else {\r\n root.classList.remove('dark')\r\n isDarkMode.value = false\r\n }\r\n \r\n localStorage.setItem('theme', theme)\r\n \r\n isInternalUpdate = false\r\n}\r\n\r\n/**\r\n * 테마 토글 버튼 클릭 시 호출되는 핸들러 함수\r\n */\r\nconst handleThemeToggle = () => {\r\n const newTheme = isDarkMode.value ? 'light' : 'dark'\r\n applyDarkModeTheme(newTheme)\r\n}\r\n\r\n/**\r\n * 저장된 tweakcn 테마를 가져와서 적용합니다.\r\n */\r\nconst getStoredTweakcnTheme = (): ThemeName => {\r\n // defaultTheme prop이 지정되면 우선 사용\r\n if (props.defaultTheme) {\r\n const validated = validateThemeExists(props.defaultTheme)\r\n return validated\r\n }\r\n \r\n const stored = getStoredTheme('tweakcn-theme')\r\n if (!stored) {\r\n return getDefaultTheme()\r\n }\r\n \r\n // 저장된 테마가 유효한지 검증\r\n const validated = validateThemeExists(stored)\r\n return validated\r\n}\r\n\r\n/**\r\n * tweakcn 테마를 HTML 문서에 적용하는 함수\r\n */\r\nconst applyTweakcnTheme = (theme: ThemeName): boolean => {\r\n isInternalUpdate = true\r\n \r\n const validatedTheme = validateThemeExists(theme)\r\n const success = applyTheme(validatedTheme)\r\n \r\n if (success) {\r\n currentTheme.value = validatedTheme\r\n setStoredTheme(validatedTheme, 'tweakcn-theme')\r\n \r\n // 스토리북 환경에서만 전역 상태 동기화\r\n if (isStorybook()) {\r\n try {\r\n const storybookGlobals = (window as any).__STORYBOOK_GLOBALS__\r\n if (storybookGlobals) {\r\n storybookGlobals.theme = validatedTheme\r\n }\r\n } catch (e) {\r\n // 무시\r\n }\r\n }\r\n } else {\r\n // 실패 시 디폴트 테마로 폴백\r\n const defaultTheme = getDefaultTheme()\r\n applyTheme(defaultTheme)\r\n currentTheme.value = defaultTheme\r\n setStoredTheme(defaultTheme, 'tweakcn-theme')\r\n }\r\n \r\n isInternalUpdate = false\r\n return success\r\n}\r\n\r\n/**\r\n * 테마 변경 핸들러\r\n */\r\nconst handleThemeChange = (theme: ThemeName | string | number) => {\r\n applyTweakcnTheme(String(theme))\r\n}\r\n\r\n/**\r\n * 현재 테마에 따라 표시할 아이콘을 계산하는 computed 속성\r\n */\r\nconst themeIcon = computed(() => {\r\n return isDarkMode.value ? 'sun' : 'moon'\r\n})\r\n\r\n/**\r\n * 초기화: 저장된 테마 적용 및 테마 목록 감지\r\n */\r\nonMounted(() => {\r\n // 테마 목록 초기 감지\r\n updateThemeOptions()\r\n \r\n // 저장된 다크모드 테마 적용\r\n const darkModeTheme = getStoredDarkModeTheme()\r\n applyDarkModeTheme(darkModeTheme)\r\n \r\n // 저장된 tweakcn 테마 적용\r\n const storedTheme = getStoredTweakcnTheme()\r\n applyTweakcnTheme(storedTheme)\r\n \r\n // HTML의 dark 클래스 변경을 감지하여 헤더 컴포넌트 상태를 동기화\r\n const root = document.documentElement\r\n \r\n // 현재 dark 클래스 상태로 초기화\r\n isDarkMode.value = root.classList.contains('dark')\r\n \r\n // MutationObserver로 동적 테마 클래스 감지\r\n themeObserver = new MutationObserver(() => {\r\n if (isInternalUpdate) return\r\n \r\n // 다크모드 클래스 변경 감지\r\n const hasDarkClass = root.classList.contains('dark')\r\n if (hasDarkClass !== isDarkMode.value) {\r\n isDarkMode.value = hasDarkClass\r\n localStorage.setItem('theme', hasDarkClass ? 'dark' : 'light')\r\n }\r\n \r\n // 테마 목록 업데이트\r\n updateThemeOptions()\r\n \r\n // 현재 적용된 tweakcn 테마 확인\r\n const currentThemeClass = Array.from(root.classList).find(cls => cls.startsWith('theme-'))\r\n if (currentThemeClass) {\r\n const themeName = currentThemeClass.replace('theme-', '')\r\n if (themeOptions.value.includes(themeName)) {\r\n currentTheme.value = themeName\r\n }\r\n }\r\n })\r\n \r\n // document.documentElement의 클래스 변경 감지\r\n themeObserver.observe(document.documentElement, {\r\n attributes: true,\r\n attributeFilter: ['class'],\r\n })\r\n \r\n // 스타일시트 변경 감지 (동적으로 추가된 테마 감지)\r\n styleObserver = new MutationObserver(() => {\r\n updateThemeOptions()\r\n })\r\n \r\n styleObserver.observe(document.head, {\r\n childList: true,\r\n subtree: true,\r\n })\r\n \r\n // 스토리북 환경에서만 다크모드 및 테마 변경 감지 (추가 보완)\r\n let intervalId: ReturnType<typeof setInterval> | null = null\r\n \r\n if (isStorybook()) {\r\n const checkStorybookGlobals = () => {\r\n try {\r\n const storybookGlobals = (window as any).__STORYBOOK_GLOBALS__\r\n if (storybookGlobals) {\r\n // 다크모드 동기화\r\n if (typeof storybookGlobals.darkMode !== 'undefined') {\r\n const storybookDarkMode = storybookGlobals.darkMode\r\n if (storybookDarkMode !== isDarkMode.value) {\r\n applyDarkModeTheme(storybookDarkMode ? 'dark' : 'light')\r\n }\r\n }\r\n \r\n // tweakcn 테마 동기화\r\n if (storybookGlobals.theme && storybookGlobals.theme !== currentTheme.value) {\r\n const storybookTheme = String(storybookGlobals.theme)\r\n if (themeOptions.value.includes(storybookTheme)) {\r\n applyTweakcnTheme(storybookTheme)\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n // 무시\r\n }\r\n }\r\n \r\n // 초기 확인\r\n checkStorybookGlobals()\r\n \r\n // 주기적으로 확인 (스토리북이 직접 이벤트를 제공하지 않는 경우)\r\n intervalId = setInterval(checkStorybookGlobals, 500)\r\n }\r\n \r\n // 컴포넌트 언마운트 시 정리\r\n onUnmounted(() => {\r\n if (themeObserver) {\r\n themeObserver.disconnect()\r\n themeObserver = null\r\n }\r\n if (styleObserver) {\r\n styleObserver.disconnect()\r\n styleObserver = null\r\n }\r\n if (intervalId) {\r\n clearInterval(intervalId)\r\n }\r\n })\r\n})\r\n</script>\r\n\r\n<template>\r\n <header :class=\"cn('flex items-center justify-between w-full', preset.containerClass)\">\r\n <!-- 왼쪽: 햄버거 메뉴 + 로고 + 네비게이션 -->\r\n <div class=\"flex items-center gap-6 flex-1\">\r\n <!-- 햄버거 메뉴 버튼 (사이드바 토글) -->\r\n <JButton\r\n v-if=\"showSidebarToggle\"\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n class=\"flex-shrink-0\"\r\n aria-label=\"사이드바 토글\"\r\n @click=\"handleSidebarToggle\"\r\n >\r\n <JIcon name=\"menu\" size=\"md\" />\r\n </JButton>\r\n\r\n <!-- 로고 -->\r\n <div\r\n v-if=\"displayLogoImage || logoText\"\r\n class=\"flex items-center cursor-pointer\"\r\n @click=\"handleLogoClick\"\r\n >\r\n <!-- 로고 이미지 (logo prop이 있고 에러가 2 미만일 때) -->\r\n <img\r\n v-if=\"displayLogoImage && logoImageError < 2\"\r\n :src=\"displayLogoImage\"\r\n alt=\"로고\"\r\n class=\"h-8 w-auto\"\r\n @error=\"handleLogoError\"\r\n />\r\n <!-- 로고 텍스트 (기본 또는 모든 이미지 실패 시) -->\r\n <span\r\n v-else-if=\"logoText\"\r\n class=\"text-lg font-bold text-foreground\"\r\n >\r\n {{ logoText }}\r\n </span>\r\n </div>\r\n\r\n <!-- 네비게이션 -->\r\n <nav\r\n v-if=\"navItems && navItems.length > 0\"\r\n class=\"flex items-center gap-1\"\r\n >\r\n <JButton\r\n v-for=\"(item, index) in navItems\"\r\n :key=\"index\"\r\n variant=\"ghost\"\r\n :class=\"cn(\r\n preset.navItemClass,\r\n item.active && preset.navItemActiveClass\r\n )\"\r\n @click=\"handleNavClick(item, index)\"\r\n >\r\n <JIcon\r\n v-if=\"item.icon\"\r\n :name=\"item.icon\"\r\n size=\"sm\"\r\n class=\"mr-1.5\"\r\n />\r\n {{ item.label }}\r\n </JButton>\r\n </nav>\r\n </div>\r\n\r\n <!-- 오른쪽: 테마 선택기 + 알림 + 다크모드 토글 + 사용자 메뉴 -->\r\n <div class=\"flex items-center gap-3\">\r\n <!-- tweakcn 테마 선택기 -->\r\n <JPopover\r\n v-if=\"showThemeSelector\"\r\n position=\"bottom\"\r\n align=\"end\"\r\n styletype=\"default-sm\"\r\n >\r\n <template #trigger>\r\n <JButton\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n aria-label=\"테마 선택\"\r\n >\r\n <JIcon name=\"palette\" size=\"md\" />\r\n </JButton>\r\n </template>\r\n <div class=\"p-2 min-w-[200px]\">\r\n <div class=\"text-xs font-medium text-muted-foreground px-2 py-1.5 mb-1\">\r\n 테마 선택\r\n </div>\r\n <div class=\"space-y-1\">\r\n <button\r\n v-for=\"theme in themeOptions\"\r\n :key=\"theme\"\r\n :class=\"cn(\r\n 'w-full flex items-center gap-2 px-2 py-1.5 text-sm rounded-md transition-colors',\r\n 'hover:bg-accent hover:text-accent-foreground',\r\n 'border-0 outline-none text-left',\r\n currentTheme === theme && 'bg-accent text-accent-foreground font-medium'\r\n )\"\r\n @click=\"handleThemeChange(theme)\"\r\n >\r\n <JIcon\r\n v-if=\"currentTheme === theme\"\r\n name=\"check\"\r\n size=\"sm\"\r\n class=\"flex-shrink-0\"\r\n />\r\n <span v-else class=\"w-4\" />\r\n <span class=\"flex-1 capitalize\">{{ theme }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </JPopover>\r\n\r\n <!-- 알림 -->\r\n <JPopover\r\n v-if=\"showNotifications\"\r\n position=\"bottom\"\r\n align=\"end\"\r\n styletype=\"default-sm\"\r\n >\r\n <template #trigger>\r\n <JButton\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n class=\"relative\"\r\n aria-label=\"알림\"\r\n >\r\n <JIcon name=\"circleAlert\" size=\"md\" />\r\n <span\r\n v-if=\"unreadCount > 0\"\r\n class=\"absolute top-0 right-0 h-4 w-4 rounded-full bg-destructive text-destructive-foreground text-xs flex items-center justify-center\"\r\n >\r\n {{ unreadCount > 9 ? '9+' : unreadCount }}\r\n </span>\r\n </JButton>\r\n </template>\r\n <div class=\"p-2\">\r\n <div\r\n v-if=\"notifications && notifications.length > 0\"\r\n class=\"max-h-96 overflow-y-auto space-y-1\"\r\n >\r\n <div\r\n v-for=\"notification in notifications\"\r\n :key=\"notification.id\"\r\n :class=\"cn(\r\n 'p-3 rounded-md cursor-pointer transition-colors',\r\n !notification.read ? 'bg-accent' : 'hover:bg-accent/50'\r\n )\"\r\n @click=\"handleNotificationClick(notification)\"\r\n >\r\n <div class=\"flex items-start gap-2\">\r\n <JIcon\r\n v-if=\"notification.icon\"\r\n :name=\"notification.icon\"\r\n size=\"sm\"\r\n class=\"mt-0.5 flex-shrink-0\"\r\n />\r\n <div class=\"flex-1 min-w-0\">\r\n <p class=\"text-sm font-medium text-foreground\">\r\n {{ notification.title }}\r\n </p>\r\n <p\r\n v-if=\"notification.message\"\r\n class=\"text-xs text-muted-foreground mt-1\"\r\n >\r\n {{ notification.message }}\r\n </p>\r\n <p\r\n v-if=\"notification.time\"\r\n class=\"text-xs text-muted-foreground/60 mt-1\"\r\n >\r\n {{ notification.time }}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n v-else\r\n class=\"p-4 text-center text-sm text-muted-foreground\"\r\n >\r\n 알림이 없습니다.\r\n </div>\r\n </div>\r\n </JPopover>\r\n\r\n <!-- 다크모드 토글 버튼 -->\r\n <JButton\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n :aria-label=\"isDarkMode ? '라이트 모드로 전환' : '다크 모드로 전환'\"\r\n @click=\"handleThemeToggle\"\r\n >\r\n <JIcon :name=\"themeIcon\" size=\"md\" />\r\n </JButton>\r\n\r\n <!-- 사용자 메뉴 (userName이 있으면 표시) -->\r\n <JPopover\r\n v-if=\"userName\"\r\n position=\"bottom\"\r\n align=\"end\"\r\n styletype=\"default-sm\"\r\n >\r\n <template #trigger>\r\n <div class=\"flex items-center gap-2 cursor-pointer hover:opacity-80 transition-opacity\">\r\n <JAvatar\r\n :src=\"userAvatar\"\r\n :fallback=\"userName ? userName[0] : 'U'\"\r\n size=\"sm\"\r\n />\r\n <span\r\n class=\"text-sm text-foreground hidden sm:inline\"\r\n >\r\n {{ userName }}\r\n </span>\r\n <JIcon name=\"chevronDown\" size=\"sm\" class=\"text-muted-foreground hidden sm:inline\" />\r\n </div>\r\n </template>\r\n <div class=\"w-full rounded-md overflow-hidden\">\r\n <!-- 프로필 정보 영역 -->\r\n <div class=\"px-3 py-2 border-b border-border\">\r\n <p class=\"text-sm font-medium text-foreground\">{{ userName }}</p>\r\n <p\r\n v-if=\"userEmail\"\r\n class=\"text-xs text-muted-foreground mt-0.5\"\r\n >\r\n {{ userEmail }}\r\n </p>\r\n </div>\r\n \r\n <!-- 메뉴 아이템 -->\r\n <template v-for=\"(group, groupIndex) in userMenuGroups\" :key=\"groupIndex\">\r\n <template v-for=\"(item, itemIndex) in group.items\" :key=\"item.id\">\r\n <button\r\n v-if=\"!item.separator\"\r\n :disabled=\"item.disabled\"\r\n :class=\"cn(\r\n 'w-full flex items-center gap-2 px-3 py-1.5 text-sm transition-colors',\r\n item.id === 'logout' \r\n ? 'text-destructive hover:bg-destructive/10 hover:text-destructive' \r\n : 'hover:bg-accent hover:text-accent-foreground',\r\n 'disabled:opacity-50 disabled:pointer-events-none',\r\n 'border-0 outline-none',\r\n group.items[itemIndex + 1]?.separator && 'border-b-0'\r\n )\"\r\n @click=\"handleUserMenuSelect(item.id)\"\r\n >\r\n <JIcon\r\n v-if=\"item.icon\"\r\n :name=\"item.icon\"\r\n size=\"sm\"\r\n :class=\"cn(\r\n 'flex-shrink-0',\r\n item.id === 'logout' && 'text-destructive'\r\n )\"\r\n />\r\n <span class=\"flex-1 text-left truncate\">{{ item.label }}</span>\r\n </button>\r\n <div\r\n v-else-if=\"item.separator && itemIndex > 0\"\r\n class=\"h-px bg-muted my-1\"\r\n />\r\n </template>\r\n <div\r\n v-if=\"groupIndex < userMenuGroups.length - 1\"\r\n class=\"h-px bg-muted my-1\"\r\n />\r\n </template>\r\n </div>\r\n </JPopover>\r\n\r\n <!-- 로그인 버튼 (userName이 없으면 표시) -->\r\n <JButton\r\n v-else\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n aria-label=\"로그인\"\r\n @click=\"handleLogin\"\r\n >\r\n <JIcon name=\"logIn\" size=\"sm\" class=\"sm:mr-1.5\" />\r\n <span class=\"hidden sm:inline\">로그인</span>\r\n </JButton>\r\n\r\n <!-- 커스텀 슬롯 -->\r\n <slot name=\"actions\" />\r\n </div>\r\n </header>\r\n</template>\r\n"],"names":["props","__props","emit","__emit","STYLE_PRESETS","preset","computed","logoImageError","ref","logoImageSrc","displayLogoImage","logoFallback","handleLogoError","unreadCount","n","fixedUserMenuItems","userMenuGroups","handleLogoClick","handleNavClick","item","index","handleNotificationClick","handleUserMenuSelect","itemId","handleLogin","handleSidebarToggle","isDarkMode","currentTheme","getDefaultTheme","themeOptions","isInternalUpdate","themeObserver","styleObserver","isStorybook","updateThemeOptions","detectedThemes","detectThemeClasses","ensuredThemes","ensureDefaultTheme","filtered","theme","getStoredDarkModeTheme","stored","applyDarkModeTheme","root","handleThemeToggle","newTheme","getStoredTweakcnTheme","validateThemeExists","getStoredTheme","applyTweakcnTheme","validatedTheme","success","applyTheme","setStoredTheme","storybookGlobals","defaultTheme","handleThemeChange","themeIcon","onMounted","darkModeTheme","storedTheme","hasDarkClass","currentThemeClass","cls","themeName","intervalId","checkStorybookGlobals","storybookDarkMode","storybookTheme","onUnmounted","_createElementBlock","_normalizeClass","_unref","cn","_createElementVNode","_hoisted_1","_createBlock","JButton","_createVNode","JIcon","_hoisted_3","_toDisplayString","_openBlock","_hoisted_4","_Fragment","_renderList","$event","_hoisted_5","JPopover","_hoisted_6","_cache","_hoisted_7","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","notification","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","JAvatar","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","group","groupIndex","itemIndex","_hoisted_29","_hoisted_28","_hoisted_30","_renderSlot","_ctx"],"mappings":"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"}