@senitix/ui 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/dist/accordion-BcwB0wwz.cjs +2 -0
  2. package/dist/accordion-BcwB0wwz.cjs.map +1 -0
  3. package/dist/accordion-BwnJKrKm.js +360 -0
  4. package/dist/accordion-BwnJKrKm.js.map +1 -0
  5. package/dist/appointment-scheduler-BoQQO51F.cjs +2 -0
  6. package/dist/appointment-scheduler-BoQQO51F.cjs.map +1 -0
  7. package/dist/appointment-scheduler-DHAs-mF_.js +192 -0
  8. package/dist/appointment-scheduler-DHAs-mF_.js.map +1 -0
  9. package/dist/arrow-right-CM3nmiZe.js +15 -0
  10. package/dist/arrow-right-CM3nmiZe.js.map +1 -0
  11. package/dist/arrow-right-vDxRZOfm.cjs +7 -0
  12. package/dist/arrow-right-vDxRZOfm.cjs.map +1 -0
  13. package/dist/avatar-BlEcWE7T.js +191 -0
  14. package/dist/avatar-BlEcWE7T.js.map +1 -0
  15. package/dist/avatar-Cl38Ye4J.cjs +2 -0
  16. package/dist/avatar-Cl38Ye4J.cjs.map +1 -0
  17. package/dist/badge-BZcdBG5J.cjs +23 -0
  18. package/dist/badge-BZcdBG5J.cjs.map +1 -0
  19. package/dist/badge-D0C_rP2l.js +157 -0
  20. package/dist/badge-D0C_rP2l.js.map +1 -0
  21. package/dist/button-BP_ug5gP.js +126 -0
  22. package/dist/button-BP_ug5gP.js.map +1 -0
  23. package/dist/button-CPuCii0R.cjs +2 -0
  24. package/dist/button-CPuCii0R.cjs.map +1 -0
  25. package/dist/{calendar-DgnhzEfp.js → calendar-86qoSnO7.js} +368 -433
  26. package/dist/calendar-86qoSnO7.js.map +1 -0
  27. package/dist/{calendar-D3RWU0_G.cjs → calendar-BH-AuyiB.cjs} +2 -2
  28. package/dist/{calendar-D3RWU0_G.cjs.map → calendar-BH-AuyiB.cjs.map} +1 -1
  29. package/dist/calendar-CSJ060ym.cjs +2 -0
  30. package/dist/calendar-CSJ060ym.cjs.map +1 -0
  31. package/dist/{calendar-CUxm1K7J.js → calendar-JUSWONQ0.js} +2 -2
  32. package/dist/{calendar-CUxm1K7J.js.map → calendar-JUSWONQ0.js.map} +1 -1
  33. package/dist/{card-DISL3sPJ.cjs → card-CToWUN1K.cjs} +2 -2
  34. package/dist/{card-DISL3sPJ.cjs.map → card-CToWUN1K.cjs.map} +1 -1
  35. package/dist/{card-fId5vof_.js → card-yxbWFvZ1.js} +2 -2
  36. package/dist/{card-fId5vof_.js.map → card-yxbWFvZ1.js.map} +1 -1
  37. package/dist/checkbox-BmugT50K.cjs +2 -0
  38. package/dist/checkbox-BmugT50K.cjs.map +1 -0
  39. package/dist/{checkbox-BY2zxQVv.js → checkbox-CTa9e4SG.js} +95 -97
  40. package/dist/checkbox-CTa9e4SG.js.map +1 -0
  41. package/dist/chevron-left-5h87iFo_.cjs +7 -0
  42. package/dist/chevron-left-5h87iFo_.cjs.map +1 -0
  43. package/dist/chevron-left-DD5mQuvf.js +14 -0
  44. package/dist/chevron-left-DD5mQuvf.js.map +1 -0
  45. package/dist/{chevron-right-Bxf8i4gi.cjs → chevron-right-D-TdAZ7l.cjs} +2 -2
  46. package/dist/{chevron-right-Bxf8i4gi.cjs.map → chevron-right-D-TdAZ7l.cjs.map} +1 -1
  47. package/dist/{chevron-right-BLyGmyaF.js → chevron-right-Di90aqSn.js} +2 -2
  48. package/dist/{chevron-right-BLyGmyaF.js.map → chevron-right-Di90aqSn.js.map} +1 -1
  49. package/dist/chevron-up-Bq55Db6X.cjs +7 -0
  50. package/dist/{chevron-up-C3RClqXD.cjs.map → chevron-up-Bq55Db6X.cjs.map} +1 -1
  51. package/dist/{chevron-up-BmYZUtrk.js → chevron-up-Dr7EIn9V.js} +2 -2
  52. package/dist/{chevron-up-BmYZUtrk.js.map → chevron-up-Dr7EIn9V.js.map} +1 -1
  53. package/dist/clock-BjJE8PGr.js +15 -0
  54. package/dist/clock-BjJE8PGr.js.map +1 -0
  55. package/dist/clock-CnxBAA_O.cjs +7 -0
  56. package/dist/clock-CnxBAA_O.cjs.map +1 -0
  57. package/dist/command-BPtg-XK3.cjs +2 -0
  58. package/dist/command-BPtg-XK3.cjs.map +1 -0
  59. package/dist/command-VraXPLVI.js +404 -0
  60. package/dist/command-VraXPLVI.js.map +1 -0
  61. package/dist/components/builders/index.cjs.js +2 -0
  62. package/dist/components/builders/index.cjs.js.map +1 -0
  63. package/dist/components/builders/index.es.js +42 -0
  64. package/dist/components/builders/index.es.js.map +1 -0
  65. package/dist/components/charts/index.cjs.js +1 -1
  66. package/dist/components/charts/index.es.js +7 -6
  67. package/dist/components/charts/index.es.js.map +1 -1
  68. package/dist/components/data-display/index.cjs.js +1 -1
  69. package/dist/components/data-display/index.es.js +43 -20
  70. package/dist/components/dnd/index.cjs.js +1 -1
  71. package/dist/components/dnd/index.es.js +1 -1
  72. package/dist/components/feedback/index.cjs.js +1 -1
  73. package/dist/components/feedback/index.es.js +1 -1
  74. package/dist/components/forms/index.cjs.js +1 -1
  75. package/dist/components/forms/index.es.js +24 -23
  76. package/dist/components/forms/index.es.js.map +1 -1
  77. package/dist/components/layouts/index.cjs.js +1 -1
  78. package/dist/components/layouts/index.es.js +45 -21
  79. package/dist/components/messaging/index.cjs.js +2 -0
  80. package/dist/components/messaging/index.cjs.js.map +1 -0
  81. package/dist/components/messaging/index.es.js +15 -0
  82. package/dist/components/messaging/index.es.js.map +1 -0
  83. package/dist/components/navigation/index.cjs.js +1 -1
  84. package/dist/components/navigation/index.es.js +1 -1
  85. package/dist/components/scheduling/index.cjs.js +2 -0
  86. package/dist/components/scheduling/index.cjs.js.map +1 -0
  87. package/dist/components/scheduling/index.es.js +6 -0
  88. package/dist/components/scheduling/index.es.js.map +1 -0
  89. package/dist/components/ui/index.cjs.js +1 -1
  90. package/dist/components/ui/index.es.js +168 -158
  91. package/dist/components/ui/index.es.js.map +1 -1
  92. package/dist/dialog-BFBDL8_i.js +382 -0
  93. package/dist/dialog-BFBDL8_i.js.map +1 -0
  94. package/dist/dialog-DO5i1PED.cjs +6 -0
  95. package/dist/dialog-DO5i1PED.cjs.map +1 -0
  96. package/dist/dropdown-menu-CkCCV_tw.js +969 -0
  97. package/dist/dropdown-menu-CkCCV_tw.js.map +1 -0
  98. package/dist/dropdown-menu-ejikFvg2.cjs +7 -0
  99. package/dist/dropdown-menu-ejikFvg2.cjs.map +1 -0
  100. package/dist/{ellipsis-6eUne95u.js → ellipsis-CKhpjj5H.js} +2 -2
  101. package/dist/{ellipsis-6eUne95u.js.map → ellipsis-CKhpjj5H.js.map} +1 -1
  102. package/dist/{ellipsis-DkM3GBF5.cjs → ellipsis-Dk7Wfc4i.cjs} +3 -3
  103. package/dist/{ellipsis-DkM3GBF5.cjs.map → ellipsis-Dk7Wfc4i.cjs.map} +1 -1
  104. package/dist/external-link-CGBqsrbm.cjs +7 -0
  105. package/dist/external-link-CGBqsrbm.cjs.map +1 -0
  106. package/dist/external-link-UeWW0ty3.js +16 -0
  107. package/dist/external-link-UeWW0ty3.js.map +1 -0
  108. package/dist/eye-Cved4eAo.cjs +7 -0
  109. package/dist/eye-Cved4eAo.cjs.map +1 -0
  110. package/dist/eye-KdCUpmO8.js +21 -0
  111. package/dist/eye-KdCUpmO8.js.map +1 -0
  112. package/dist/{file-Cw_u_aJB.js → file-CHbdXCWO.js} +2 -2
  113. package/dist/{file-Cw_u_aJB.js.map → file-CHbdXCWO.js.map} +1 -1
  114. package/dist/{file-Cp5UoYUZ.cjs → file-CqYRamm8.cjs} +3 -3
  115. package/dist/{file-Cp5UoYUZ.cjs.map → file-CqYRamm8.cjs.map} +1 -1
  116. package/dist/file-spreadsheet-CpySxI0-.cjs +7 -0
  117. package/dist/file-spreadsheet-CpySxI0-.cjs.map +1 -0
  118. package/dist/file-spreadsheet-EqZMR-mM.js +19 -0
  119. package/dist/file-spreadsheet-EqZMR-mM.js.map +1 -0
  120. package/dist/form-preview-BGdea5K7.cjs +111 -0
  121. package/dist/form-preview-BGdea5K7.cjs.map +1 -0
  122. package/dist/form-preview-C6WfeXyD.js +12075 -0
  123. package/dist/form-preview-C6WfeXyD.js.map +1 -0
  124. package/dist/full-calendar-CZMK_rPy.cjs +18 -0
  125. package/dist/full-calendar-CZMK_rPy.cjs.map +1 -0
  126. package/dist/full-calendar-CjaDgutS.js +2631 -0
  127. package/dist/full-calendar-CjaDgutS.js.map +1 -0
  128. package/dist/funnel-chart-Dfj1pOyV.cjs +6 -0
  129. package/dist/funnel-chart-Dfj1pOyV.cjs.map +1 -0
  130. package/dist/funnel-chart-o9qcEMgg.js +2952 -0
  131. package/dist/funnel-chart-o9qcEMgg.js.map +1 -0
  132. package/dist/global-search-Dhv8goH8.js +1331 -0
  133. package/dist/global-search-Dhv8goH8.js.map +1 -0
  134. package/dist/global-search-msFICB8l.cjs +22 -0
  135. package/dist/global-search-msFICB8l.cjs.map +1 -0
  136. package/dist/hooks/index.cjs.js +1 -1
  137. package/dist/hooks/index.es.js +9 -7
  138. package/dist/hooks/index.es.js.map +1 -1
  139. package/dist/{index-DtaLkIY8.js → index-BGUveO6l.js} +84 -79
  140. package/dist/{index-DtaLkIY8.js.map → index-BGUveO6l.js.map} +1 -1
  141. package/dist/{index-gVbM3K4f.cjs → index-Bhee6XHk.cjs} +2 -2
  142. package/dist/{index-gVbM3K4f.cjs.map → index-Bhee6XHk.cjs.map} +1 -1
  143. package/dist/index-CrSlyWAA.js +1090 -0
  144. package/dist/index-CrSlyWAA.js.map +1 -0
  145. package/dist/{index-Dk_Et2WJ.js → index-D8-pHJim.js} +2 -2
  146. package/dist/{index-Dk_Et2WJ.js.map → index-D8-pHJim.js.map} +1 -1
  147. package/dist/index-Dy_9oyP3.cjs +2 -0
  148. package/dist/{index-D2U2F80P.cjs.map → index-Dy_9oyP3.cjs.map} +1 -1
  149. package/dist/index-hnbbvGmb.cjs +21 -0
  150. package/dist/index-hnbbvGmb.cjs.map +1 -0
  151. package/dist/index.cjs.js +1 -1
  152. package/dist/index.es.js +434 -319
  153. package/dist/index.es.js.map +1 -1
  154. package/dist/input-Pfq8fkiV.js +2718 -0
  155. package/dist/input-Pfq8fkiV.js.map +1 -0
  156. package/dist/input-UBp7V7li.cjs +52 -0
  157. package/dist/input-UBp7V7li.cjs.map +1 -0
  158. package/dist/label-CExiitfO.js +50 -0
  159. package/dist/label-CExiitfO.js.map +1 -0
  160. package/dist/label-F0zGAiI2.cjs +2 -0
  161. package/dist/label-F0zGAiI2.cjs.map +1 -0
  162. package/dist/loader-circle-CBVYGIRp.js +14 -0
  163. package/dist/loader-circle-CBVYGIRp.js.map +1 -0
  164. package/dist/loader-circle-IaJKvYsP.cjs +7 -0
  165. package/dist/loader-circle-IaJKvYsP.cjs.map +1 -0
  166. package/dist/locale-provider-BHGNO4j7.js +1786 -0
  167. package/dist/locale-provider-BHGNO4j7.js.map +1 -0
  168. package/dist/locale-provider-BScpm-eC.cjs +2 -0
  169. package/dist/locale-provider-BScpm-eC.cjs.map +1 -0
  170. package/dist/locale-selector-D0jV4-90.cjs +12 -0
  171. package/dist/locale-selector-D0jV4-90.cjs.map +1 -0
  172. package/dist/locale-selector-n75sM9qA.js +1740 -0
  173. package/dist/locale-selector-n75sM9qA.js.map +1 -0
  174. package/dist/map-pin-CHh0xl6i.js +46 -0
  175. package/dist/map-pin-CHh0xl6i.js.map +1 -0
  176. package/dist/map-pin-DGObSZ40.cjs +17 -0
  177. package/dist/map-pin-DGObSZ40.cjs.map +1 -0
  178. package/dist/message-square-B_xLey5D.js +14 -0
  179. package/dist/message-square-B_xLey5D.js.map +1 -0
  180. package/dist/message-square-_69ua8rH.cjs +7 -0
  181. package/dist/message-square-_69ua8rH.cjs.map +1 -0
  182. package/dist/minus-BUFkTM0k.cjs +7 -0
  183. package/dist/{minus-C0uyaz70.cjs.map → minus-BUFkTM0k.cjs.map} +1 -1
  184. package/dist/{minus-CiwV65ZG.js → minus-DJ0tmymW.js} +2 -2
  185. package/dist/{minus-CiwV65ZG.js.map → minus-DJ0tmymW.js.map} +1 -1
  186. package/dist/multi-container-CytCGxsc.cjs +7 -0
  187. package/dist/multi-container-CytCGxsc.cjs.map +1 -0
  188. package/dist/multi-container-DmkgnCJN.js +799 -0
  189. package/dist/multi-container-DmkgnCJN.js.map +1 -0
  190. package/dist/multi-select-D9akBt7B.js +224 -0
  191. package/dist/multi-select-D9akBt7B.js.map +1 -0
  192. package/dist/multi-select-DxN_LuXC.cjs +7 -0
  193. package/dist/multi-select-DxN_LuXC.cjs.map +1 -0
  194. package/dist/pencil-BJULwaDl.cjs +12 -0
  195. package/dist/pencil-BJULwaDl.cjs.map +1 -0
  196. package/dist/pencil-HL0trGIs.js +31 -0
  197. package/dist/pencil-HL0trGIs.js.map +1 -0
  198. package/dist/permission-matrix-CTQ1OiTO.js +6128 -0
  199. package/dist/permission-matrix-CTQ1OiTO.js.map +1 -0
  200. package/dist/permission-matrix-DRu-cV44.cjs +93 -0
  201. package/dist/permission-matrix-DRu-cV44.cjs.map +1 -0
  202. package/dist/phone-B0J1dGIE.js +31 -0
  203. package/dist/phone-B0J1dGIE.js.map +1 -0
  204. package/dist/phone-DPA6vucM.cjs +12 -0
  205. package/dist/phone-DPA6vucM.cjs.map +1 -0
  206. package/dist/plus-Bcuujcqd.cjs +7 -0
  207. package/dist/{plus-BsV82JJ5.cjs.map → plus-Bcuujcqd.cjs.map} +1 -1
  208. package/dist/{plus-DxD6rofl.js → plus-D7DMDKb8.js} +2 -2
  209. package/dist/{plus-DxD6rofl.js.map → plus-D7DMDKb8.js.map} +1 -1
  210. package/dist/popover-Bba1ELMX.cjs +2 -0
  211. package/dist/popover-Bba1ELMX.cjs.map +1 -0
  212. package/dist/popover-CZWAuYUL.js +281 -0
  213. package/dist/popover-CZWAuYUL.js.map +1 -0
  214. package/dist/progress-BPpsmZ48.js +218 -0
  215. package/dist/progress-BPpsmZ48.js.map +1 -0
  216. package/dist/progress-BrzjVhWG.cjs +22 -0
  217. package/dist/progress-BrzjVhWG.cjs.map +1 -0
  218. package/dist/providers/index.cjs.js +1 -1
  219. package/dist/providers/index.es.js +1 -1
  220. package/dist/radio-group-B9RM_c7e.js +244 -0
  221. package/dist/radio-group-B9RM_c7e.js.map +1 -0
  222. package/dist/radio-group-_n8TTqNQ.cjs +2 -0
  223. package/dist/radio-group-_n8TTqNQ.cjs.map +1 -0
  224. package/dist/record-dialog-footer-CQPnqhfv.js +2577 -0
  225. package/dist/record-dialog-footer-CQPnqhfv.js.map +1 -0
  226. package/dist/record-dialog-footer-DLH96eAV.cjs +37 -0
  227. package/dist/record-dialog-footer-DLH96eAV.cjs.map +1 -0
  228. package/dist/scroll-area-CGNbDUBQ.js +889 -0
  229. package/dist/scroll-area-CGNbDUBQ.js.map +1 -0
  230. package/dist/scroll-area-HsTSI_58.cjs +22 -0
  231. package/dist/scroll-area-HsTSI_58.cjs.map +1 -0
  232. package/dist/select-CEsYpjPi.cjs +2 -0
  233. package/dist/select-CEsYpjPi.cjs.map +1 -0
  234. package/dist/{select-BJpZrtep.js → select-Ce2C2acZ.js} +184 -179
  235. package/dist/select-Ce2C2acZ.js.map +1 -0
  236. package/dist/send-DIkOd-pu.js +21 -0
  237. package/dist/send-DIkOd-pu.js.map +1 -0
  238. package/dist/send-H6HC-rS8.cjs +7 -0
  239. package/dist/send-H6HC-rS8.cjs.map +1 -0
  240. package/dist/shared-inbox-Bv0AgLew.js +702 -0
  241. package/dist/shared-inbox-Bv0AgLew.js.map +1 -0
  242. package/dist/shared-inbox-DWEKfDX3.cjs +22 -0
  243. package/dist/shared-inbox-DWEKfDX3.cjs.map +1 -0
  244. package/dist/sheet-C0-aBGln.cjs +2 -0
  245. package/dist/sheet-C0-aBGln.cjs.map +1 -0
  246. package/dist/sheet-Cyq_eDFW.js +147 -0
  247. package/dist/sheet-Cyq_eDFW.js.map +1 -0
  248. package/dist/{skeleton-Bl6FAxHT.js → skeleton-C_dwS3_6.js} +2 -2
  249. package/dist/{skeleton-Bl6FAxHT.js.map → skeleton-C_dwS3_6.js.map} +1 -1
  250. package/dist/{skeleton-Cb6MWerF.cjs → skeleton-D3YsjVWD.cjs} +2 -2
  251. package/dist/{skeleton-Cb6MWerF.cjs.map → skeleton-D3YsjVWD.cjs.map} +1 -1
  252. package/dist/sparkline-chart-BP4bk24J.js +15881 -0
  253. package/dist/sparkline-chart-BP4bk24J.js.map +1 -0
  254. package/dist/sparkline-chart-D6SLZVjp.cjs +79 -0
  255. package/dist/sparkline-chart-D6SLZVjp.cjs.map +1 -0
  256. package/dist/styles.css +1 -1
  257. package/dist/switch-AEZvZSRV.cjs +2 -0
  258. package/dist/switch-AEZvZSRV.cjs.map +1 -0
  259. package/dist/switch-BF4LLvaU.js +147 -0
  260. package/dist/switch-BF4LLvaU.js.map +1 -0
  261. package/dist/table-2-Bn-YjZ9s.cjs +17 -0
  262. package/dist/table-2-Bn-YjZ9s.cjs.map +1 -0
  263. package/dist/table-2-C7E_N72K.js +52 -0
  264. package/dist/table-2-C7E_N72K.js.map +1 -0
  265. package/dist/textarea-4qZDuQ-C.js +206 -0
  266. package/dist/textarea-4qZDuQ-C.js.map +1 -0
  267. package/dist/textarea-Bq_zyt0L.cjs +2 -0
  268. package/dist/textarea-Bq_zyt0L.cjs.map +1 -0
  269. package/dist/tooltip-Dd7le9EO.cjs +2 -0
  270. package/dist/tooltip-Dd7le9EO.cjs.map +1 -0
  271. package/dist/tooltip-Dee-pNPI.js +338 -0
  272. package/dist/tooltip-Dee-pNPI.js.map +1 -0
  273. package/dist/trash-2-B3EP3JfM.js +18 -0
  274. package/dist/trash-2-B3EP3JfM.js.map +1 -0
  275. package/dist/trash-2-DWEeKlWT.cjs +7 -0
  276. package/dist/trash-2-DWEeKlWT.cjs.map +1 -0
  277. package/dist/{trending-up-BHFXgLWy.js → trending-up-ljWtN4pj.js} +2 -2
  278. package/dist/{trending-up-BHFXgLWy.js.map → trending-up-ljWtN4pj.js.map} +1 -1
  279. package/dist/{trending-up-BBjz_E69.cjs → trending-up-mLgmkp--.cjs} +2 -2
  280. package/dist/{trending-up-BBjz_E69.cjs.map → trending-up-mLgmkp--.cjs.map} +1 -1
  281. package/dist/upload-2tm-XihE.cjs +7 -0
  282. package/dist/upload-2tm-XihE.cjs.map +1 -0
  283. package/dist/upload-C_JDP8O0.js +16 -0
  284. package/dist/upload-C_JDP8O0.js.map +1 -0
  285. package/dist/use-controllable-state-3ATd6Fqd.cjs +2 -0
  286. package/dist/use-controllable-state-3ATd6Fqd.cjs.map +1 -0
  287. package/dist/use-controllable-state-CEa-Zlq6.js +23 -0
  288. package/dist/use-controllable-state-CEa-Zlq6.js.map +1 -0
  289. package/dist/use-formatters-Bb0fX1lW.cjs +2 -0
  290. package/dist/{use-formatters-CObUgipW.cjs.map → use-formatters-Bb0fX1lW.cjs.map} +1 -1
  291. package/dist/{use-formatters-Bgj3JA4i.js → use-formatters-xeMS4gdV.js} +1160 -1165
  292. package/dist/{use-formatters-Bgj3JA4i.js.map → use-formatters-xeMS4gdV.js.map} +1 -1
  293. package/dist/utils/index.cjs.js +1 -1
  294. package/dist/utils/index.es.js +1 -1
  295. package/dist/welcome-card-Ccbl_miQ.js +1007 -0
  296. package/dist/welcome-card-Ccbl_miQ.js.map +1 -0
  297. package/dist/welcome-card-D-ShMkaS.cjs +37 -0
  298. package/dist/welcome-card-D-ShMkaS.cjs.map +1 -0
  299. package/dist/x-BBkgEhUv.js +15 -0
  300. package/dist/x-BBkgEhUv.js.map +1 -0
  301. package/dist/x-D-El5XAY.cjs +7 -0
  302. package/dist/x-D-El5XAY.cjs.map +1 -0
  303. package/package.json +20 -2
  304. package/dist/avatar-BT_SPwFW.cjs +0 -18
  305. package/dist/avatar-BT_SPwFW.cjs.map +0 -1
  306. package/dist/avatar-C5-ZWIqT.js +0 -305
  307. package/dist/avatar-C5-ZWIqT.js.map +0 -1
  308. package/dist/calendar-BF5drX5u.cjs +0 -12
  309. package/dist/calendar-BF5drX5u.cjs.map +0 -1
  310. package/dist/calendar-DgnhzEfp.js.map +0 -1
  311. package/dist/checkbox-BY2zxQVv.js.map +0 -1
  312. package/dist/checkbox-CL6u7vL6.cjs +0 -2
  313. package/dist/checkbox-CL6u7vL6.cjs.map +0 -1
  314. package/dist/chevron-down-BiUlxZA-.js +0 -14
  315. package/dist/chevron-down-BiUlxZA-.js.map +0 -1
  316. package/dist/chevron-down-Ce0kqXiD.cjs +0 -7
  317. package/dist/chevron-down-Ce0kqXiD.cjs.map +0 -1
  318. package/dist/chevron-up-C3RClqXD.cjs +0 -7
  319. package/dist/createLucideIcon-BC8wu-bu.js +0 -80
  320. package/dist/createLucideIcon-BC8wu-bu.js.map +0 -1
  321. package/dist/createLucideIcon-Cv8nC2E9.cjs +0 -22
  322. package/dist/createLucideIcon-Cv8nC2E9.cjs.map +0 -1
  323. package/dist/filter-tags-DoRzXjuY.cjs +0 -48
  324. package/dist/filter-tags-DoRzXjuY.cjs.map +0 -1
  325. package/dist/filter-tags-zEQmRhEU.js +0 -2712
  326. package/dist/filter-tags-zEQmRhEU.js.map +0 -1
  327. package/dist/full-calendar-5Z4JSj8g.js +0 -3551
  328. package/dist/full-calendar-5Z4JSj8g.js.map +0 -1
  329. package/dist/full-calendar-DjAvCfuE.cjs +0 -23
  330. package/dist/full-calendar-DjAvCfuE.cjs.map +0 -1
  331. package/dist/global-search-BbZfc-VL.js +0 -1216
  332. package/dist/global-search-BbZfc-VL.js.map +0 -1
  333. package/dist/global-search-Bd74_wPV.cjs +0 -22
  334. package/dist/global-search-Bd74_wPV.cjs.map +0 -1
  335. package/dist/index-D2U2F80P.cjs +0 -2
  336. package/dist/index-DG0KV-sw.cjs +0 -11
  337. package/dist/index-DG0KV-sw.cjs.map +0 -1
  338. package/dist/index-XnFSmCuh.js +0 -299
  339. package/dist/index-XnFSmCuh.js.map +0 -1
  340. package/dist/input-BgPy-4Qu.js +0 -3658
  341. package/dist/input-BgPy-4Qu.js.map +0 -1
  342. package/dist/input-Cfr2WB-P.cjs +0 -47
  343. package/dist/input-Cfr2WB-P.cjs.map +0 -1
  344. package/dist/locale-provider-BojNdf1Y.cjs +0 -2
  345. package/dist/locale-provider-BojNdf1Y.cjs.map +0 -1
  346. package/dist/locale-provider-DzBeb-X3.js +0 -1013
  347. package/dist/locale-provider-DzBeb-X3.js.map +0 -1
  348. package/dist/locale-selector-BD1IWk6X.cjs +0 -22
  349. package/dist/locale-selector-BD1IWk6X.cjs.map +0 -1
  350. package/dist/locale-selector-DLRSyVye.js +0 -1772
  351. package/dist/locale-selector-DLRSyVye.js.map +0 -1
  352. package/dist/minus-C0uyaz70.cjs +0 -7
  353. package/dist/multi-container-BZia7HCU.js +0 -748
  354. package/dist/multi-container-BZia7HCU.js.map +0 -1
  355. package/dist/multi-container-BdNbgtPZ.cjs +0 -7
  356. package/dist/multi-container-BdNbgtPZ.cjs.map +0 -1
  357. package/dist/pipeline-Dh052Dvj.cjs +0 -27
  358. package/dist/pipeline-Dh052Dvj.cjs.map +0 -1
  359. package/dist/pipeline-DqWvleNy.js +0 -1076
  360. package/dist/pipeline-DqWvleNy.js.map +0 -1
  361. package/dist/plus-BsV82JJ5.cjs +0 -7
  362. package/dist/popover-BgLxmm1z.cjs +0 -7
  363. package/dist/popover-BgLxmm1z.cjs.map +0 -1
  364. package/dist/popover-PI9jbhnS.js +0 -775
  365. package/dist/popover-PI9jbhnS.js.map +0 -1
  366. package/dist/progress-CTTt_CP3.js +0 -260
  367. package/dist/progress-CTTt_CP3.js.map +0 -1
  368. package/dist/progress-CTWb7X1Q.cjs +0 -37
  369. package/dist/progress-CTWb7X1Q.cjs.map +0 -1
  370. package/dist/scroll-area-A3jGu-Ta.js +0 -974
  371. package/dist/scroll-area-A3jGu-Ta.js.map +0 -1
  372. package/dist/scroll-area-DzDnWIYJ.cjs +0 -12
  373. package/dist/scroll-area-DzDnWIYJ.cjs.map +0 -1
  374. package/dist/select-BJpZrtep.js.map +0 -1
  375. package/dist/select-Ii8HRuXa.cjs +0 -2
  376. package/dist/select-Ii8HRuXa.cjs.map +0 -1
  377. package/dist/separator-BzcDE0Ei.cjs +0 -2
  378. package/dist/separator-BzcDE0Ei.cjs.map +0 -1
  379. package/dist/separator-DyarVo1-.js +0 -396
  380. package/dist/separator-DyarVo1-.js.map +0 -1
  381. package/dist/sheet-DPSdOoE6.js +0 -84
  382. package/dist/sheet-DPSdOoE6.js.map +0 -1
  383. package/dist/sheet-XtjvbEMq.cjs +0 -2
  384. package/dist/sheet-XtjvbEMq.cjs.map +0 -1
  385. package/dist/sparkline-chart-CeCDeMNk.cjs +0 -102
  386. package/dist/sparkline-chart-CeCDeMNk.cjs.map +0 -1
  387. package/dist/sparkline-chart-DUS4CoW_.js +0 -19787
  388. package/dist/sparkline-chart-DUS4CoW_.js.map +0 -1
  389. package/dist/use-formatters-CObUgipW.cjs +0 -2
  390. package/dist/welcome-card-CNuEa6Ck.cjs +0 -67
  391. package/dist/welcome-card-CNuEa6Ck.cjs.map +0 -1
  392. package/dist/welcome-card-Cp6t6G3j.js +0 -1041
  393. package/dist/welcome-card-Cp6t6G3j.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-inbox-Bv0AgLew.js","sources":["../node_modules/lucide-react/dist/esm/icons/message-circle.js","../node_modules/lucide-react/dist/esm/icons/share-2.js","../node_modules/lucide-react/dist/esm/icons/smartphone.js","../node_modules/lucide-react/dist/esm/icons/user-plus.js","../src/components/messaging/shared-inbox/inbox-channel-chip.tsx","../src/components/messaging/shared-inbox/inbox-sla-badge.tsx","../src/components/messaging/shared-inbox/inbox-ticket-item.tsx","../src/components/messaging/shared-inbox/inbox-sidebar.tsx","../src/components/messaging/shared-inbox/inbox-assignment.tsx","../src/components/messaging/shared-inbox/inbox-header.tsx","../src/components/messaging/shared-inbox/inbox-message-bubble.tsx","../src/components/messaging/shared-inbox/inbox-thread.tsx","../src/components/messaging/shared-inbox/inbox-composer.tsx","../src/components/messaging/shared-inbox/use-shared-inbox.ts","../src/components/messaging/shared-inbox/shared-inbox.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst MessageCircle = createLucideIcon(\"MessageCircle\", [\n [\"path\", { d: \"M7.9 20A9 9 0 1 0 4 16.1L2 22Z\", key: \"vv11sd\" }]\n]);\n\nexport { MessageCircle as default };\n//# sourceMappingURL=message-circle.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Share2 = createLucideIcon(\"Share2\", [\n [\"circle\", { cx: \"18\", cy: \"5\", r: \"3\", key: \"gq8acd\" }],\n [\"circle\", { cx: \"6\", cy: \"12\", r: \"3\", key: \"w7nqdw\" }],\n [\"circle\", { cx: \"18\", cy: \"19\", r: \"3\", key: \"1xt0gg\" }],\n [\"line\", { x1: \"8.59\", x2: \"15.42\", y1: \"13.51\", y2: \"17.49\", key: \"47mynk\" }],\n [\"line\", { x1: \"15.41\", x2: \"8.59\", y1: \"6.51\", y2: \"10.49\", key: \"1n3mei\" }]\n]);\n\nexport { Share2 as default };\n//# sourceMappingURL=share-2.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Smartphone = createLucideIcon(\"Smartphone\", [\n [\"rect\", { width: \"14\", height: \"20\", x: \"5\", y: \"2\", rx: \"2\", ry: \"2\", key: \"1yt0o3\" }],\n [\"path\", { d: \"M12 18h.01\", key: \"mhygvu\" }]\n]);\n\nexport { Smartphone as default };\n//# sourceMappingURL=smartphone.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst UserPlus = createLucideIcon(\"UserPlus\", [\n [\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\", key: \"1yyitq\" }],\n [\"circle\", { cx: \"9\", cy: \"7\", r: \"4\", key: \"nufk8\" }],\n [\"line\", { x1: \"19\", x2: \"19\", y1: \"8\", y2: \"14\", key: \"1bvyxn\" }],\n [\"line\", { x1: \"22\", x2: \"16\", y1: \"11\", y2: \"11\", key: \"1shjgl\" }]\n]);\n\nexport { UserPlus as default };\n//# sourceMappingURL=user-plus.js.map\n","import { Mail, MessageCircle, Phone, Share2, Smartphone, MessageSquare } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { Badge } from '@/components/ui/badge'\nimport type { InboxChannel } from './inbox-types'\n\nconst channelConfig: Record<InboxChannel, { icon: React.ReactNode; labelKey: string; color: string }> = {\n email: {\n icon: <Mail className=\"h-3 w-3\" />,\n labelKey: 'inbox.channel.email',\n color: 'bg-blue-100 text-blue-700 border-blue-200',\n },\n chat: {\n icon: <MessageCircle className=\"h-3 w-3\" />,\n labelKey: 'inbox.channel.chat',\n color: 'bg-green-100 text-green-700 border-green-200',\n },\n phone: {\n icon: <Phone className=\"h-3 w-3\" />,\n labelKey: 'inbox.channel.phone',\n color: 'bg-purple-100 text-purple-700 border-purple-200',\n },\n social: {\n icon: <Share2 className=\"h-3 w-3\" />,\n labelKey: 'inbox.channel.social',\n color: 'bg-pink-100 text-pink-700 border-pink-200',\n },\n sms: {\n icon: <Smartphone className=\"h-3 w-3\" />,\n labelKey: 'inbox.channel.sms',\n color: 'bg-orange-100 text-orange-700 border-orange-200',\n },\n whatsapp: {\n icon: <MessageSquare className=\"h-3 w-3\" />,\n labelKey: 'inbox.channel.whatsapp',\n color: 'bg-emerald-100 text-emerald-700 border-emerald-200',\n },\n}\n\nexport interface InboxChannelChipProps {\n channel: InboxChannel\n className?: string\n}\n\nexport function InboxChannelChip({ channel, className }: InboxChannelChipProps) {\n const { t } = useLocale()\n const config = channelConfig[channel] ?? channelConfig.email\n\n return (\n <Badge\n variant=\"outline\"\n className={cn('gap-1 text-[10px] px-1.5 py-0 font-medium', config.color, className)}\n >\n {config.icon}\n {t(config.labelKey)}\n </Badge>\n )\n}\n","import { Clock } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { Badge } from '@/components/ui/badge'\n\nexport interface InboxSlaBadgeProps {\n deadline: Date | string\n className?: string\n}\n\nfunction formatTimeRemaining(deadline: Date, t: (key: string) => string): string {\n const now = new Date()\n const diff = deadline.getTime() - now.getTime()\n\n if (diff < 0) {\n const overdue = Math.abs(diff)\n const hours = Math.floor(overdue / (1000 * 60 * 60))\n const minutes = Math.floor((overdue % (1000 * 60 * 60)) / (1000 * 60))\n if (hours > 0) return `${hours}h ${minutes}m ${t('inbox.overdue')}`\n return `${minutes}m ${t('inbox.overdue')}`\n }\n\n const hours = Math.floor(diff / (1000 * 60 * 60))\n const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60))\n if (hours > 24) {\n const days = Math.floor(hours / 24)\n return `${days}d ${t('inbox.left')}`\n }\n if (hours > 0) return `${hours}h ${minutes}m ${t('inbox.left')}`\n return `${minutes}m ${t('inbox.left')}`\n}\n\nexport function InboxSlaBadge({ deadline, className }: InboxSlaBadgeProps) {\n const { t } = useLocale()\n const deadlineDate = deadline instanceof Date ? deadline : new Date(deadline)\n const now = new Date()\n const isOverdue = deadlineDate.getTime() < now.getTime()\n const diff = deadlineDate.getTime() - now.getTime()\n const isUrgent = diff > 0 && diff < 1000 * 60 * 60 // Less than 1 hour\n\n return (\n <Badge\n variant=\"outline\"\n className={cn(\n 'gap-1 text-[10px] px-1.5 py-0 font-medium',\n isOverdue && 'bg-destructive/10 text-destructive border-destructive/30 animate-pulse',\n isUrgent && !isOverdue && 'bg-warning/10 text-warning border-warning/30',\n !isOverdue && !isUrgent && 'bg-muted text-muted-foreground',\n className\n )}\n >\n <Clock className=\"h-2.5 w-2.5\" />\n {formatTimeRemaining(deadlineDate, t)}\n </Badge>\n )\n}\n","import { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\nimport { InboxChannelChip } from './inbox-channel-chip'\nimport { InboxSlaBadge } from './inbox-sla-badge'\nimport type { InboxTicket } from './inbox-types'\n\nexport interface InboxTicketItemProps {\n ticket: InboxTicket\n isSelected: boolean\n onClick: () => void\n className?: string\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(' ')\n .map((n) => n[0])\n .join('')\n .toUpperCase()\n .slice(0, 2)\n}\n\nfunction formatRelativeTime(date: Date | string, t: (key: string, params?: Record<string, string | number>) => string): string {\n const d = date instanceof Date ? date : new Date(date)\n const now = new Date()\n const diff = now.getTime() - d.getTime()\n const minutes = Math.floor(diff / (1000 * 60))\n const hours = Math.floor(diff / (1000 * 60 * 60))\n const days = Math.floor(diff / (1000 * 60 * 60 * 24))\n\n if (minutes < 1) return t('inbox.now')\n if (minutes < 60) return t('record.minutesAgo', { count: minutes })\n if (hours < 24) return t('record.hoursAgo', { count: hours })\n if (days < 7) return t('record.daysAgo', { count: days })\n return d.toLocaleDateString()\n}\n\nconst priorityIndicator: Record<string, string> = {\n low: '',\n medium: 'border-l-warning',\n high: 'border-l-orange-500',\n urgent: 'border-l-destructive',\n}\n\nexport function InboxTicketItem({\n ticket,\n isSelected,\n onClick,\n className,\n}: InboxTicketItemProps) {\n const { t } = useLocale()\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n 'flex w-full gap-3 border-b border-l-2 px-3 py-3 text-left transition-colors',\n 'hover:bg-muted/50',\n isSelected && 'bg-muted border-l-primary',\n !isSelected && (priorityIndicator[ticket.priority] || 'border-l-transparent'),\n ticket.unreadCount && ticket.unreadCount > 0 && !isSelected && 'bg-primary/5',\n className\n )}\n >\n <Avatar className=\"h-8 w-8 shrink-0\">\n <AvatarImage src={ticket.contact.avatar} alt={ticket.contact.name} />\n <AvatarFallback className=\"text-[10px]\">{getInitials(ticket.contact.name)}</AvatarFallback>\n </Avatar>\n\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center justify-between gap-1\">\n <span className={cn('text-sm truncate', ticket.unreadCount && ticket.unreadCount > 0 ? 'font-semibold' : 'font-medium')}>\n {ticket.contact.name}\n </span>\n <span className=\"text-[10px] text-muted-foreground shrink-0\">\n {formatRelativeTime(ticket.lastMessageAt, t)}\n </span>\n </div>\n\n <p className=\"text-xs font-medium truncate text-foreground/90\">{ticket.subject}</p>\n\n {ticket.lastMessage && (\n <p className=\"text-[11px] text-muted-foreground truncate mt-0.5\">{ticket.lastMessage}</p>\n )}\n\n <div className=\"flex items-center gap-1.5 mt-1.5\">\n <InboxChannelChip channel={ticket.channel} />\n {ticket.slaDeadline && <InboxSlaBadge deadline={ticket.slaDeadline} />}\n {ticket.unreadCount && ticket.unreadCount > 0 && (\n <span className=\"ml-auto flex h-4 min-w-4 items-center justify-center rounded-full bg-primary px-1 text-[9px] font-bold text-primary-foreground\">\n {ticket.unreadCount}\n </span>\n )}\n </div>\n </div>\n </button>\n )\n}\n","import * as React from 'react'\nimport { Search } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { useControllableState } from '@/hooks/use-controllable-state'\nimport { Input } from '@/components/ui/input'\nimport { ScrollArea } from '@/components/ui/scroll-area'\nimport { Tabs, TabsList, TabsTrigger } from '@/components/ui/tabs'\nimport { InboxTicketItem } from './inbox-ticket-item'\nimport type { InboxTicket, TicketStatus } from './inbox-types'\n\nexport interface InboxSidebarProps {\n tickets: InboxTicket[]\n selectedTicketId?: string\n onTicketSelect: (ticketId: string) => void\n searchQuery?: string\n defaultSearchQuery?: string\n onSearchQueryChange?: (query: string) => void\n statusFilter?: 'all' | TicketStatus\n defaultStatusFilter?: 'all' | TicketStatus\n onStatusFilterChange?: (status: 'all' | TicketStatus) => void\n renderTicketItem?: (\n ticket: InboxTicket,\n context: { isSelected: boolean; defaultNode: React.ReactNode; onSelect: () => void }\n ) => React.ReactNode\n className?: string\n}\n\nexport function InboxSidebar({\n tickets,\n selectedTicketId,\n onTicketSelect,\n searchQuery: controlledSearch,\n defaultSearchQuery = '',\n onSearchQueryChange,\n statusFilter: controlledStatusFilter,\n defaultStatusFilter = 'all',\n onStatusFilterChange,\n renderTicketItem,\n className,\n}: InboxSidebarProps) {\n const { t } = useLocale()\n const [search, setSearch] = useControllableState({\n value: controlledSearch,\n defaultValue: defaultSearchQuery,\n onChange: onSearchQueryChange,\n })\n const [statusFilter, setStatusFilter] = useControllableState<'all' | TicketStatus>({\n value: controlledStatusFilter,\n defaultValue: defaultStatusFilter,\n onChange: onStatusFilterChange,\n })\n\n const filtered = React.useMemo(() => {\n let result = tickets\n if (statusFilter !== 'all') {\n result = result.filter((t) => t.status === statusFilter)\n }\n if (search) {\n const q = search.toLowerCase()\n result = result.filter(\n (t) =>\n t.subject.toLowerCase().includes(q) ||\n t.contact.name.toLowerCase().includes(q) ||\n t.lastMessage?.toLowerCase().includes(q)\n )\n }\n return result\n }, [tickets, statusFilter, search])\n\n const counts = React.useMemo(() => ({\n all: tickets.length,\n open: tickets.filter((t) => t.status === 'open').length,\n pending: tickets.filter((t) => t.status === 'pending').length,\n resolved: tickets.filter((t) => t.status === 'resolved').length,\n }), [tickets])\n\n return (\n <div className={cn('flex h-full w-[340px] flex-col border-r bg-background', className)}>\n {/* Search */}\n <div className=\"border-b px-3 py-2.5\">\n <div className=\"relative\">\n <Search className=\"absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground\" />\n <Input\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder={t('inbox.searchConversations')}\n className=\"h-8 pl-8 text-xs\"\n />\n </div>\n </div>\n\n {/* Status tabs */}\n <Tabs value={statusFilter} onValueChange={(v) => setStatusFilter(v as typeof statusFilter)}>\n <TabsList className=\"w-full justify-start rounded-none border-b bg-transparent px-3 py-0 h-auto\">\n <TabsTrigger value=\"all\" className=\"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:shadow-none text-xs py-2\">\n {t('inbox.filter.all')} ({counts.all})\n </TabsTrigger>\n <TabsTrigger value=\"open\" className=\"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:shadow-none text-xs py-2\">\n {t('inbox.filter.open')} ({counts.open})\n </TabsTrigger>\n <TabsTrigger value=\"pending\" className=\"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:shadow-none text-xs py-2\">\n {t('inbox.filter.pending')} ({counts.pending})\n </TabsTrigger>\n <TabsTrigger value=\"resolved\" className=\"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:shadow-none text-xs py-2\">\n {t('inbox.filter.resolved')} ({counts.resolved})\n </TabsTrigger>\n </TabsList>\n </Tabs>\n\n {/* Ticket list */}\n <ScrollArea className=\"flex-1\">\n {filtered.length > 0 ? (\n filtered.map((ticket) => {\n const isSelected = selectedTicketId === ticket.id\n const onSelect = () => onTicketSelect(ticket.id)\n const defaultNode = (\n <InboxTicketItem\n key={ticket.id}\n ticket={ticket}\n isSelected={isSelected}\n onClick={onSelect}\n />\n )\n\n return (\n <React.Fragment key={ticket.id}>\n {renderTicketItem\n ? renderTicketItem(ticket, { isSelected, defaultNode, onSelect })\n : defaultNode}\n </React.Fragment>\n )\n })\n ) : (\n <div className=\"flex items-center justify-center py-8 text-sm text-muted-foreground\">\n {t('inbox.noConversations')}\n </div>\n )}\n </ScrollArea>\n </div>\n )\n}\n","import { UserPlus } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\nimport { Button } from '@/components/ui/button'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu'\nimport type { InboxAgent } from './inbox-types'\n\nexport interface InboxAssignmentProps {\n assignee?: InboxAgent\n agents: InboxAgent[]\n onAssign: (agentId: string) => void\n className?: string\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(' ')\n .map((n) => n[0])\n .join('')\n .toUpperCase()\n .slice(0, 2)\n}\n\nexport function InboxAssignment({\n assignee,\n agents,\n onAssign,\n className,\n}: InboxAssignmentProps) {\n const { t } = useLocale()\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn('gap-1.5 h-7', className)}\n >\n {assignee ? (\n <>\n <Avatar className=\"h-4 w-4\">\n <AvatarImage src={assignee.avatar} alt={assignee.name} />\n <AvatarFallback className=\"text-[8px]\">{getInitials(assignee.name)}</AvatarFallback>\n </Avatar>\n <span className=\"text-xs\">{assignee.name}</span>\n </>\n ) : (\n <>\n <UserPlus className=\"h-3 w-3\" />\n <span className=\"text-xs\">{t('inbox.assign')}</span>\n </>\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuLabel className=\"text-xs\">{t('inbox.assignTo')}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {agents.map((agent) => (\n <DropdownMenuItem\n key={agent.id}\n onClick={() => onAssign(agent.id)}\n className=\"gap-2\"\n >\n <Avatar className=\"h-5 w-5\">\n <AvatarImage src={agent.avatar} alt={agent.name} />\n <AvatarFallback className=\"text-[8px]\">{getInitials(agent.name)}</AvatarFallback>\n </Avatar>\n <span className=\"text-sm\">{agent.name}</span>\n {agent.status === 'online' && (\n <span className=\"ml-auto h-2 w-2 rounded-full bg-green-500\" />\n )}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n","import { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { Badge } from '@/components/ui/badge'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/ui/select'\nimport { InboxChannelChip } from './inbox-channel-chip'\nimport { InboxSlaBadge } from './inbox-sla-badge'\nimport { InboxAssignment } from './inbox-assignment'\nimport type { InboxTicket, InboxAgent, TicketStatus, TicketPriority } from './inbox-types'\n\nconst statusOptions: { value: TicketStatus; labelKey: string }[] = [\n { value: 'open', labelKey: 'status.open' },\n { value: 'pending', labelKey: 'status.pending' },\n { value: 'resolved', labelKey: 'status.resolved' },\n { value: 'closed', labelKey: 'status.closed' },\n]\n\nconst priorityOptions: { value: TicketPriority; labelKey: string }[] = [\n { value: 'low', labelKey: 'status.low' },\n { value: 'medium', labelKey: 'status.medium' },\n { value: 'high', labelKey: 'status.high' },\n { value: 'urgent', labelKey: 'status.urgent' },\n]\n\nexport interface InboxHeaderProps {\n ticket: InboxTicket\n agents: InboxAgent[]\n onStatusChange?: (status: TicketStatus) => void\n onPriorityChange?: (priority: TicketPriority) => void\n onAssign?: (agentId: string) => void\n className?: string\n}\n\nexport function InboxHeader({\n ticket,\n agents,\n onStatusChange,\n onPriorityChange,\n onAssign,\n className,\n}: InboxHeaderProps) {\n const { t } = useLocale()\n\n return (\n <div className={cn('border-b px-4 py-2.5', className)}>\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"min-w-0 flex-1\">\n <h2 className=\"text-sm font-semibold truncate\">{ticket.subject}</h2>\n <div className=\"flex items-center gap-2 mt-1\">\n <span className=\"text-xs text-muted-foreground\">{ticket.contact.name}</span>\n <InboxChannelChip channel={ticket.channel} />\n {ticket.slaDeadline && <InboxSlaBadge deadline={ticket.slaDeadline} />}\n {ticket.tags?.map((tag) => (\n <Badge key={tag} variant=\"secondary\" className=\"text-[10px] px-1.5 py-0\">\n {tag}\n </Badge>\n ))}\n </div>\n </div>\n\n <div className=\"flex items-center gap-2 shrink-0\">\n <Select\n value={ticket.status}\n onValueChange={(v) => onStatusChange?.(v as TicketStatus)}\n >\n <SelectTrigger size=\"sm\" className=\"w-[110px] h-7 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {statusOptions.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {t(opt.labelKey)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <Select\n value={ticket.priority}\n onValueChange={(v) => onPriorityChange?.(v as TicketPriority)}\n >\n <SelectTrigger size=\"sm\" className=\"w-[100px] h-7 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {priorityOptions.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {t(opt.labelKey)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {onAssign && (\n <InboxAssignment\n assignee={ticket.assignee}\n agents={agents}\n onAssign={onAssign}\n />\n )}\n </div>\n </div>\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\nimport { InboxChannelChip } from './inbox-channel-chip'\nimport type { InboxMessage } from './inbox-types'\n\nexport interface InboxMessageBubbleProps {\n message: InboxMessage\n className?: string\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(' ')\n .map((n) => n[0])\n .join('')\n .toUpperCase()\n .slice(0, 2)\n}\n\nfunction formatTime(date: Date | string): string {\n const d = date instanceof Date ? date : new Date(date)\n return d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })\n}\n\nexport function InboxMessageBubble({ message, className }: InboxMessageBubbleProps) {\n const { t } = useLocale()\n const isAgent = message.isAgent\n\n return (\n <div\n className={cn(\n 'flex gap-2 max-w-[75%]',\n isAgent ? 'ml-auto flex-row-reverse' : 'mr-auto',\n className\n )}\n >\n <Avatar className=\"h-7 w-7 shrink-0 mt-1\">\n <AvatarImage src={message.sender.avatar} alt={message.sender.name} />\n <AvatarFallback className=\"text-[9px]\">{getInitials(message.sender.name)}</AvatarFallback>\n </Avatar>\n\n <div className={cn('space-y-0.5', isAgent ? 'items-end' : 'items-start')}>\n <div className=\"flex items-center gap-1.5\">\n <span className=\"text-[11px] font-medium\">{message.sender.name}</span>\n <InboxChannelChip channel={message.channel} />\n </div>\n\n <div\n className={cn(\n 'rounded-xl px-3 py-2 text-sm',\n isAgent\n ? 'bg-primary text-primary-foreground rounded-tr-sm'\n : 'bg-muted rounded-tl-sm'\n )}\n >\n <p className=\"whitespace-pre-wrap break-words\">{message.content}</p>\n\n {message.attachments && message.attachments.length > 0 && (\n <div className=\"mt-2 space-y-1\">\n {message.attachments.map((att) => (\n <a\n key={att.id}\n href={att.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n 'flex items-center gap-1 rounded px-2 py-1 text-[11px] underline-offset-2 hover:underline',\n isAgent ? 'bg-primary-foreground/10' : 'bg-background'\n )}\n >\n {att.name}\n {att.size && (\n <span className=\"opacity-60\">\n ({(att.size / 1024).toFixed(0)}KB)\n </span>\n )}\n </a>\n ))}\n </div>\n )}\n </div>\n\n <div className=\"flex items-center gap-1\">\n <span className=\"text-[10px] text-muted-foreground\">{formatTime(message.createdAt)}</span>\n {isAgent && message.readAt && (\n <span className=\"text-[10px] text-muted-foreground\">· {t('inbox.read')}</span>\n )}\n </div>\n </div>\n </div>\n )\n}\n","import * as React from 'react'\nimport { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { ScrollArea } from '@/components/ui/scroll-area'\nimport { InboxMessageBubble } from './inbox-message-bubble'\nimport type { InboxMessage } from './inbox-types'\n\nexport interface InboxThreadProps {\n messages: InboxMessage[]\n className?: string\n}\n\nfunction formatDateDivider(date: Date | string, t: (key: string) => string): string {\n const d = date instanceof Date ? date : new Date(date)\n const now = new Date()\n const diff = now.getTime() - d.getTime()\n const days = Math.floor(diff / (1000 * 60 * 60 * 24))\n\n if (days === 0) return t('date.today')\n if (days === 1) return t('date.yesterday')\n if (days < 7) return d.toLocaleDateString(undefined, { weekday: 'long' })\n return d.toLocaleDateString()\n}\n\nfunction groupMessagesByDate(messages: InboxMessage[], t: (key: string) => string): { date: string; messages: InboxMessage[] }[] {\n const groups: { date: string; messages: InboxMessage[] }[] = []\n let currentDate = ''\n\n for (const message of messages) {\n const dateStr = formatDateDivider(message.createdAt, t)\n if (dateStr !== currentDate) {\n currentDate = dateStr\n groups.push({ date: dateStr, messages: [] })\n }\n groups[groups.length - 1].messages.push(message)\n }\n\n return groups\n}\n\nexport function InboxThread({ messages, className }: InboxThreadProps) {\n const { t } = useLocale()\n const scrollRef = React.useRef<HTMLDivElement>(null)\n\n // Auto-scroll to bottom when new messages arrive\n React.useEffect(() => {\n if (scrollRef.current) {\n scrollRef.current.scrollTop = scrollRef.current.scrollHeight\n }\n }, [messages.length])\n\n const groups = React.useMemo(() => groupMessagesByDate(messages, t), [messages, t])\n\n if (messages.length === 0) {\n return (\n <div className={cn('flex flex-1 items-center justify-center text-muted-foreground', className)}>\n <p className=\"text-sm\">{t('inbox.noMessages')}</p>\n </div>\n )\n }\n\n return (\n <ScrollArea className={cn('flex-1', className)} ref={scrollRef}>\n <div className=\"space-y-4 p-4\">\n {groups.map((group) => (\n <div key={group.date} className=\"space-y-3\">\n {/* Date divider */}\n <div className=\"flex items-center gap-3\">\n <div className=\"flex-1 border-t\" />\n <span className=\"text-[10px] font-medium text-muted-foreground shrink-0\">\n {group.date}\n </span>\n <div className=\"flex-1 border-t\" />\n </div>\n\n {/* Messages */}\n {group.messages.map((message) => (\n <InboxMessageBubble key={message.id} message={message} />\n ))}\n </div>\n ))}\n </div>\n </ScrollArea>\n )\n}\n","import * as React from 'react'\nimport { Send } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { Button } from '@/components/ui/button'\nimport { Textarea } from '@/components/ui/textarea'\n\nexport interface InboxComposerProps {\n onSend: (content: string) => void\n placeholder?: string\n disabled?: boolean\n className?: string\n}\n\nexport function InboxComposer({\n onSend,\n placeholder,\n disabled = false,\n className,\n}: InboxComposerProps) {\n const { t } = useLocale()\n const [content, setContent] = React.useState('')\n\n const handleSend = () => {\n const trimmed = content.trim()\n if (!trimmed) return\n onSend(trimmed)\n setContent('')\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n handleSend()\n }\n }\n\n return (\n <div className={cn('border-t p-3', className)}>\n <div className=\"flex gap-2\">\n <Textarea\n value={content}\n onChange={(e) => setContent(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder ?? t('inbox.typeReply')}\n disabled={disabled}\n rows={2}\n className=\"min-h-[60px] resize-none text-sm\"\n />\n <Button\n size=\"icon\"\n onClick={handleSend}\n disabled={disabled || !content.trim()}\n className=\"shrink-0 self-end\"\n >\n <Send className=\"h-4 w-4\" />\n </Button>\n </div>\n <p className=\"mt-1 text-[10px] text-muted-foreground\">\n {t('inbox.enterToSendHint')}\n </p>\n </div>\n )\n}\n","import * as React from 'react'\nimport type { InboxTicket, InboxMessage, TicketStatus, TicketPriority, InboxChannel } from './inbox-types'\n\nexport interface UseSharedInboxProps {\n tickets: InboxTicket[]\n messages: InboxMessage[]\n selectedTicketId?: string\n defaultSelectedTicketId?: string\n autoSelectFirstTicket?: boolean\n onTicketSelect?: (ticketId: string) => void\n onReply?: (ticketId: string, content: string, channel?: InboxChannel) => void\n onStatusChange?: (ticketId: string, status: TicketStatus) => void\n onAssign?: (ticketId: string, agentId: string) => void\n onPriorityChange?: (ticketId: string, priority: TicketPriority) => void\n}\n\nexport function useSharedInbox({\n tickets,\n messages,\n selectedTicketId: controlledSelectedId,\n defaultSelectedTicketId,\n autoSelectFirstTicket = false,\n onTicketSelect,\n onReply,\n onStatusChange,\n onAssign,\n onPriorityChange,\n}: UseSharedInboxProps) {\n const [internalSelectedId, setInternalSelectedId] = React.useState<string | undefined>(\n defaultSelectedTicketId\n )\n const selectedTicketId = controlledSelectedId ?? internalSelectedId\n\n React.useEffect(() => {\n if (!autoSelectFirstTicket) return\n if (selectedTicketId) return\n const firstTicketId = tickets[0]?.id\n if (!firstTicketId) return\n if (controlledSelectedId === undefined) {\n setInternalSelectedId(firstTicketId)\n }\n onTicketSelect?.(firstTicketId)\n }, [autoSelectFirstTicket, selectedTicketId, tickets, controlledSelectedId, onTicketSelect])\n\n const handleTicketSelect = React.useCallback(\n (ticketId: string) => {\n if (!controlledSelectedId) {\n setInternalSelectedId(ticketId)\n }\n onTicketSelect?.(ticketId)\n },\n [controlledSelectedId, onTicketSelect]\n )\n\n const selectedTicket = React.useMemo(\n () => tickets.find((t) => t.id === selectedTicketId),\n [tickets, selectedTicketId]\n )\n\n const threadMessages = React.useMemo(\n () => (selectedTicketId ? messages.filter((m) => m.ticketId === selectedTicketId) : []),\n [messages, selectedTicketId]\n )\n\n const handleReply = React.useCallback(\n (content: string) => {\n if (selectedTicketId) {\n onReply?.(selectedTicketId, content, selectedTicket?.channel)\n }\n },\n [selectedTicketId, selectedTicket, onReply]\n )\n\n const handleStatusChange = React.useCallback(\n (status: TicketStatus) => {\n if (selectedTicketId) {\n onStatusChange?.(selectedTicketId, status)\n }\n },\n [selectedTicketId, onStatusChange]\n )\n\n const handleAssign = React.useCallback(\n (agentId: string) => {\n if (selectedTicketId) {\n onAssign?.(selectedTicketId, agentId)\n }\n },\n [selectedTicketId, onAssign]\n )\n\n const handlePriorityChange = React.useCallback(\n (priority: TicketPriority) => {\n if (selectedTicketId) {\n onPriorityChange?.(selectedTicketId, priority)\n }\n },\n [selectedTicketId, onPriorityChange]\n )\n\n return {\n selectedTicketId,\n selectedTicket,\n threadMessages,\n handleTicketSelect,\n handleReply,\n handleStatusChange,\n handleAssign,\n handlePriorityChange,\n }\n}\n","import { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { InboxSidebar } from './inbox-sidebar'\nimport { InboxHeader } from './inbox-header'\nimport { InboxThread } from './inbox-thread'\nimport { InboxComposer } from './inbox-composer'\nimport { useSharedInbox } from './use-shared-inbox'\nimport type { SharedInboxProps } from './inbox-types'\n\n/**\n * SharedInbox - Omnichannel conversation UI for CRM/helpdesk applications.\n *\n * Features:\n * - Ticket sidebar with search, status filtering, and unread indicators\n * - Message thread with date grouping and agent/contact bubbles\n * - Channel chips (email, chat, phone, social, SMS, WhatsApp)\n * - SLA timer badges\n * - Agent assignment\n * - Reply composer with Enter-to-send\n *\n * @example\n * ```tsx\n * <SharedInbox\n * tickets={tickets}\n * messages={messages}\n * agents={agents}\n * onReply={(ticketId, content) => sendMessage(ticketId, content)}\n * onStatusChange={(ticketId, status) => updateStatus(ticketId, status)}\n * onAssign={(ticketId, agentId) => assignTicket(ticketId, agentId)}\n * />\n * ```\n */\nfunction SharedInbox({\n tickets,\n messages,\n agents = [],\n selectedTicketId: controlledSelectedId,\n defaultSelectedTicketId,\n autoSelectFirstTicket = false,\n onTicketSelect,\n onReply,\n onStatusChange,\n onAssign,\n onPriorityChange,\n sidebarSearchQuery,\n defaultSidebarSearchQuery,\n onSidebarSearchQueryChange,\n sidebarStatusFilter,\n defaultSidebarStatusFilter,\n onSidebarStatusFilterChange,\n renderTicketItem,\n renderNoSelectionState,\n height = 600,\n className,\n}: SharedInboxProps) {\n const { t } = useLocale()\n const {\n selectedTicketId,\n selectedTicket,\n threadMessages,\n handleTicketSelect,\n handleReply,\n handleStatusChange,\n handleAssign,\n handlePriorityChange,\n } = useSharedInbox({\n tickets,\n messages,\n selectedTicketId: controlledSelectedId,\n defaultSelectedTicketId,\n autoSelectFirstTicket,\n onTicketSelect,\n onReply,\n onStatusChange,\n onAssign,\n onPriorityChange,\n })\n\n return (\n <div\n className={cn('flex overflow-hidden rounded-lg border bg-background', className)}\n style={{ height }}\n >\n {/* Sidebar */}\n <InboxSidebar\n tickets={tickets}\n selectedTicketId={selectedTicketId}\n onTicketSelect={handleTicketSelect}\n searchQuery={sidebarSearchQuery}\n defaultSearchQuery={defaultSidebarSearchQuery}\n onSearchQueryChange={onSidebarSearchQueryChange}\n statusFilter={sidebarStatusFilter}\n defaultStatusFilter={defaultSidebarStatusFilter}\n onStatusFilterChange={onSidebarStatusFilterChange}\n renderTicketItem={renderTicketItem}\n />\n\n {/* Thread area */}\n <div className=\"flex flex-1 flex-col min-w-0\">\n {selectedTicket ? (\n <>\n <InboxHeader\n ticket={selectedTicket}\n agents={agents}\n onStatusChange={handleStatusChange}\n onPriorityChange={handlePriorityChange}\n onAssign={handleAssign}\n />\n <InboxThread messages={threadMessages} />\n <InboxComposer onSend={handleReply} />\n </>\n ) : (\n <div className=\"flex flex-1 items-center justify-center text-muted-foreground\">\n {renderNoSelectionState ?? (\n <div className=\"text-center\">\n <p className=\"text-sm font-medium\">{t('inbox.selectConversation')}</p>\n <p className=\"text-xs mt-1\">{t('inbox.selectConversationHint')}</p>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n )\n}\n\nSharedInbox.displayName = 'SharedInbox'\n\nexport { SharedInbox }\n"],"names":["MessageCircle","createLucideIcon","Share2","Smartphone","UserPlus","channelConfig","jsx","Mail","Phone","MessageSquare","InboxChannelChip","channel","className","t","useLocale","config","jsxs","Badge","cn","formatTimeRemaining","deadline","now","diff","overdue","hours","minutes","InboxSlaBadge","deadlineDate","isOverdue","isUrgent","Clock","getInitials","name","n","formatRelativeTime","date","d","days","priorityIndicator","InboxTicketItem","ticket","isSelected","onClick","Avatar","AvatarImage","AvatarFallback","InboxSidebar","tickets","selectedTicketId","onTicketSelect","controlledSearch","defaultSearchQuery","onSearchQueryChange","controlledStatusFilter","defaultStatusFilter","onStatusFilterChange","renderTicketItem","search","setSearch","useControllableState","statusFilter","setStatusFilter","filtered","React","result","q","counts","Search","Input","e","Tabs","v","TabsList","TabsTrigger","ScrollArea","onSelect","defaultNode","InboxAssignment","assignee","agents","onAssign","DropdownMenu","DropdownMenuTrigger","Button","Fragment","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","agent","DropdownMenuItem","statusOptions","priorityOptions","InboxHeader","onStatusChange","onPriorityChange","_a","tag","Select","SelectTrigger","SelectValue","SelectContent","opt","SelectItem","formatTime","InboxMessageBubble","message","isAgent","att","formatDateDivider","groupMessagesByDate","messages","groups","currentDate","dateStr","InboxThread","scrollRef","group","InboxComposer","onSend","placeholder","disabled","content","setContent","handleSend","trimmed","handleKeyDown","Textarea","Send","useSharedInbox","controlledSelectedId","defaultSelectedTicketId","autoSelectFirstTicket","onReply","internalSelectedId","setInternalSelectedId","firstTicketId","handleTicketSelect","ticketId","selectedTicket","threadMessages","m","handleReply","handleStatusChange","status","handleAssign","agentId","handlePriorityChange","priority","SharedInbox","sidebarSearchQuery","defaultSidebarSearchQuery","onSidebarSearchQueryChange","sidebarStatusFilter","defaultSidebarStatusFilter","onSidebarStatusFilterChange","renderNoSelectionState","height"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
@@ -0,0 +1,22 @@
1
+ "use strict";const e=require("react/jsx-runtime"),p=require("./index-Dy_9oyP3.cjs"),N=require("./locale-provider-BScpm-eC.cjs"),ne=require("react"),$=require("./use-controllable-state-3ATd6Fqd.cjs"),ae=require("./input-UBp7V7li.cjs"),D=require("./scroll-area-HsTSI_58.cjs"),I=require("./textarea-Bq_zyt0L.cjs"),g=require("./avatar-Cl38Ye4J.cjs"),q=require("./badge-BZcdBG5J.cjs"),te=require("./message-square-_69ua8rH.cjs"),B=require("./phone-DPA6vucM.cjs"),re=require("./clock-CnxBAA_O.cjs"),C=require("./dropdown-menu-ejikFvg2.cjs"),y=require("./select-CEsYpjPi.cjs"),V=require("./button-CPuCii0R.cjs"),le=require("./send-H6HC-rS8.cjs");function oe(s){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const a in s)if(a!=="default"){const r=Object.getOwnPropertyDescriptor(s,a);Object.defineProperty(n,a,r.get?r:{enumerable:!0,get:()=>s[a]})}}return n.default=s,Object.freeze(n)}const h=oe(ne);/**
2
+ * @license lucide-react v0.441.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const ce=D.createLucideIcon("MessageCircle",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]]);/**
7
+ * @license lucide-react v0.441.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const ie=D.createLucideIcon("Share2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]);/**
12
+ * @license lucide-react v0.441.0 - ISC
13
+ *
14
+ * This source code is licensed under the ISC license.
15
+ * See the LICENSE file in the root directory of this source tree.
16
+ */const de=D.createLucideIcon("Smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]);/**
17
+ * @license lucide-react v0.441.0 - ISC
18
+ *
19
+ * This source code is licensed under the ISC license.
20
+ * See the LICENSE file in the root directory of this source tree.
21
+ */const ue=D.createLucideIcon("UserPlus",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]),z={email:{icon:e.jsx(B.Mail,{className:"h-3 w-3"}),labelKey:"inbox.channel.email",color:"bg-blue-100 text-blue-700 border-blue-200"},chat:{icon:e.jsx(ce,{className:"h-3 w-3"}),labelKey:"inbox.channel.chat",color:"bg-green-100 text-green-700 border-green-200"},phone:{icon:e.jsx(B.Phone,{className:"h-3 w-3"}),labelKey:"inbox.channel.phone",color:"bg-purple-100 text-purple-700 border-purple-200"},social:{icon:e.jsx(ie,{className:"h-3 w-3"}),labelKey:"inbox.channel.social",color:"bg-pink-100 text-pink-700 border-pink-200"},sms:{icon:e.jsx(de,{className:"h-3 w-3"}),labelKey:"inbox.channel.sms",color:"bg-orange-100 text-orange-700 border-orange-200"},whatsapp:{icon:e.jsx(te.MessageSquare,{className:"h-3 w-3"}),labelKey:"inbox.channel.whatsapp",color:"bg-emerald-100 text-emerald-700 border-emerald-200"}};function A({channel:s,className:n}){const{t:a}=N.useLocale(),r=z[s]??z.email;return e.jsxs(q.Badge,{variant:"outline",className:p.cn("gap-1 text-[10px] px-1.5 py-0 font-medium",r.color,n),children:[r.icon,a(r.labelKey)]})}function xe(s,n){const a=new Date,r=s.getTime()-a.getTime();if(r<0){const c=Math.abs(r),x=Math.floor(c/(1e3*60*60)),o=Math.floor(c%(1e3*60*60)/(1e3*60));return x>0?`${x}h ${o}m ${n("inbox.overdue")}`:`${o}m ${n("inbox.overdue")}`}const l=Math.floor(r/(1e3*60*60)),t=Math.floor(r%(1e3*60*60)/(1e3*60));return l>24?`${Math.floor(l/24)}d ${n("inbox.left")}`:l>0?`${l}h ${t}m ${n("inbox.left")}`:`${t}m ${n("inbox.left")}`}function K({deadline:s,className:n}){const{t:a}=N.useLocale(),r=s instanceof Date?s:new Date(s),l=new Date,t=r.getTime()<l.getTime(),c=r.getTime()-l.getTime(),x=c>0&&c<1e3*60*60;return e.jsxs(q.Badge,{variant:"outline",className:p.cn("gap-1 text-[10px] px-1.5 py-0 font-medium",t&&"bg-destructive/10 text-destructive border-destructive/30 animate-pulse",x&&!t&&"bg-warning/10 text-warning border-warning/30",!t&&!x&&"bg-muted text-muted-foreground",n),children:[e.jsx(re.Clock,{className:"h-2.5 w-2.5"}),xe(r,a)]})}function me(s){return s.split(" ").map(n=>n[0]).join("").toUpperCase().slice(0,2)}function he(s,n){const a=s instanceof Date?s:new Date(s),l=new Date().getTime()-a.getTime(),t=Math.floor(l/(1e3*60)),c=Math.floor(l/(1e3*60*60)),x=Math.floor(l/(1e3*60*60*24));return t<1?n("inbox.now"):t<60?n("record.minutesAgo",{count:t}):c<24?n("record.hoursAgo",{count:c}):x<7?n("record.daysAgo",{count:x}):a.toLocaleDateString()}const pe={low:"",medium:"border-l-warning",high:"border-l-orange-500",urgent:"border-l-destructive"};function H({ticket:s,isSelected:n,onClick:a,className:r}){const{t:l}=N.useLocale();return e.jsxs("button",{type:"button",onClick:a,className:p.cn("flex w-full gap-3 border-b border-l-2 px-3 py-3 text-left transition-colors","hover:bg-muted/50",n&&"bg-muted border-l-primary",!n&&(pe[s.priority]||"border-l-transparent"),s.unreadCount&&s.unreadCount>0&&!n&&"bg-primary/5",r),children:[e.jsxs(g.Avatar,{className:"h-8 w-8 shrink-0",children:[e.jsx(g.AvatarImage,{src:s.contact.avatar,alt:s.contact.name}),e.jsx(g.AvatarFallback,{className:"text-[10px]",children:me(s.contact.name)})]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center justify-between gap-1",children:[e.jsx("span",{className:p.cn("text-sm truncate",s.unreadCount&&s.unreadCount>0?"font-semibold":"font-medium"),children:s.contact.name}),e.jsx("span",{className:"text-[10px] text-muted-foreground shrink-0",children:he(s.lastMessageAt,l)})]}),e.jsx("p",{className:"text-xs font-medium truncate text-foreground/90",children:s.subject}),s.lastMessage&&e.jsx("p",{className:"text-[11px] text-muted-foreground truncate mt-0.5",children:s.lastMessage}),e.jsxs("div",{className:"flex items-center gap-1.5 mt-1.5",children:[e.jsx(A,{channel:s.channel}),s.slaDeadline&&e.jsx(K,{deadline:s.slaDeadline}),s.unreadCount&&s.unreadCount>0&&e.jsx("span",{className:"ml-auto flex h-4 min-w-4 items-center justify-center rounded-full bg-primary px-1 text-[9px] font-bold text-primary-foreground",children:s.unreadCount})]})]})]})}function U({tickets:s,selectedTicketId:n,onTicketSelect:a,searchQuery:r,defaultSearchQuery:l="",onSearchQueryChange:t,statusFilter:c,defaultStatusFilter:x="all",onStatusFilterChange:o,renderTicketItem:m,className:S}){const{t:j}=N.useLocale(),[i,T]=$.useControllableState({value:r,defaultValue:l,onChange:t}),[f,L]=$.useControllableState({value:c,defaultValue:x,onChange:o}),M=h.useMemo(()=>{let u=s;if(f!=="all"&&(u=u.filter(b=>b.status===f)),i){const b=i.toLowerCase();u=u.filter(d=>{var v;return d.subject.toLowerCase().includes(b)||d.contact.name.toLowerCase().includes(b)||((v=d.lastMessage)==null?void 0:v.toLowerCase().includes(b))})}return u},[s,f,i]),w=h.useMemo(()=>({all:s.length,open:s.filter(u=>u.status==="open").length,pending:s.filter(u=>u.status==="pending").length,resolved:s.filter(u=>u.status==="resolved").length}),[s]);return e.jsxs("div",{className:p.cn("flex h-full w-[340px] flex-col border-r bg-background",S),children:[e.jsx("div",{className:"border-b px-3 py-2.5",children:e.jsxs("div",{className:"relative",children:[e.jsx(C.Search,{className:"absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground"}),e.jsx(ae.Input,{value:i,onChange:u=>T(u.target.value),placeholder:j("inbox.searchConversations"),className:"h-8 pl-8 text-xs"})]})}),e.jsx(I.Tabs,{value:f,onValueChange:u=>L(u),children:e.jsxs(I.TabsList,{className:"w-full justify-start rounded-none border-b bg-transparent px-3 py-0 h-auto",children:[e.jsxs(I.TabsTrigger,{value:"all",className:"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:shadow-none text-xs py-2",children:[j("inbox.filter.all")," (",w.all,")"]}),e.jsxs(I.TabsTrigger,{value:"open",className:"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:shadow-none text-xs py-2",children:[j("inbox.filter.open")," (",w.open,")"]}),e.jsxs(I.TabsTrigger,{value:"pending",className:"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:shadow-none text-xs py-2",children:[j("inbox.filter.pending")," (",w.pending,")"]}),e.jsxs(I.TabsTrigger,{value:"resolved",className:"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:shadow-none text-xs py-2",children:[j("inbox.filter.resolved")," (",w.resolved,")"]})]})}),e.jsx(D.ScrollArea,{className:"flex-1",children:M.length>0?M.map(u=>{const b=n===u.id,d=()=>a(u.id),v=e.jsx(H,{ticket:u,isSelected:b,onClick:d},u.id);return e.jsx(h.Fragment,{children:m?m(u,{isSelected:b,defaultNode:v,onSelect:d}):v},u.id)}):e.jsx("div",{className:"flex items-center justify-center py-8 text-sm text-muted-foreground",children:j("inbox.noConversations")})})]})}function O(s){return s.split(" ").map(n=>n[0]).join("").toUpperCase().slice(0,2)}function R({assignee:s,agents:n,onAssign:a,className:r}){const{t:l}=N.useLocale();return e.jsxs(C.DropdownMenu,{children:[e.jsx(C.DropdownMenuTrigger,{asChild:!0,children:e.jsx(V.Button,{variant:"ghost",size:"sm",className:p.cn("gap-1.5 h-7",r),children:s?e.jsxs(e.Fragment,{children:[e.jsxs(g.Avatar,{className:"h-4 w-4",children:[e.jsx(g.AvatarImage,{src:s.avatar,alt:s.name}),e.jsx(g.AvatarFallback,{className:"text-[8px]",children:O(s.name)})]}),e.jsx("span",{className:"text-xs",children:s.name})]}):e.jsxs(e.Fragment,{children:[e.jsx(ue,{className:"h-3 w-3"}),e.jsx("span",{className:"text-xs",children:l("inbox.assign")})]})})}),e.jsxs(C.DropdownMenuContent,{align:"end",children:[e.jsx(C.DropdownMenuLabel,{className:"text-xs",children:l("inbox.assignTo")}),e.jsx(C.DropdownMenuSeparator,{}),n.map(t=>e.jsxs(C.DropdownMenuItem,{onClick:()=>a(t.id),className:"gap-2",children:[e.jsxs(g.Avatar,{className:"h-5 w-5",children:[e.jsx(g.AvatarImage,{src:t.avatar,alt:t.name}),e.jsx(g.AvatarFallback,{className:"text-[8px]",children:O(t.name)})]}),e.jsx("span",{className:"text-sm",children:t.name}),t.status==="online"&&e.jsx("span",{className:"ml-auto h-2 w-2 rounded-full bg-green-500"})]},t.id))]})]})}const fe=[{value:"open",labelKey:"status.open"},{value:"pending",labelKey:"status.pending"},{value:"resolved",labelKey:"status.resolved"},{value:"closed",labelKey:"status.closed"}],be=[{value:"low",labelKey:"status.low"},{value:"medium",labelKey:"status.medium"},{value:"high",labelKey:"status.high"},{value:"urgent",labelKey:"status.urgent"}];function _({ticket:s,agents:n,onStatusChange:a,onPriorityChange:r,onAssign:l,className:t}){var x;const{t:c}=N.useLocale();return e.jsx("div",{className:p.cn("border-b px-4 py-2.5",t),children:e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h2",{className:"text-sm font-semibold truncate",children:s.subject}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:s.contact.name}),e.jsx(A,{channel:s.channel}),s.slaDeadline&&e.jsx(K,{deadline:s.slaDeadline}),(x=s.tags)==null?void 0:x.map(o=>e.jsx(q.Badge,{variant:"secondary",className:"text-[10px] px-1.5 py-0",children:o},o))]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[e.jsxs(y.Select,{value:s.status,onValueChange:o=>a==null?void 0:a(o),children:[e.jsx(y.SelectTrigger,{size:"sm",className:"w-[110px] h-7 text-xs",children:e.jsx(y.SelectValue,{})}),e.jsx(y.SelectContent,{children:fe.map(o=>e.jsx(y.SelectItem,{value:o.value,children:c(o.labelKey)},o.value))})]}),e.jsxs(y.Select,{value:s.priority,onValueChange:o=>r==null?void 0:r(o),children:[e.jsx(y.SelectTrigger,{size:"sm",className:"w-[100px] h-7 text-xs",children:e.jsx(y.SelectValue,{})}),e.jsx(y.SelectContent,{children:be.map(o=>e.jsx(y.SelectItem,{value:o.value,children:c(o.labelKey)},o.value))})]}),l&&e.jsx(R,{assignee:s.assignee,agents:n,onAssign:l})]})]})})}function ge(s){return s.split(" ").map(n=>n[0]).join("").toUpperCase().slice(0,2)}function je(s){return(s instanceof Date?s:new Date(s)).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}function Q({message:s,className:n}){const{t:a}=N.useLocale(),r=s.isAgent;return e.jsxs("div",{className:p.cn("flex gap-2 max-w-[75%]",r?"ml-auto flex-row-reverse":"mr-auto",n),children:[e.jsxs(g.Avatar,{className:"h-7 w-7 shrink-0 mt-1",children:[e.jsx(g.AvatarImage,{src:s.sender.avatar,alt:s.sender.name}),e.jsx(g.AvatarFallback,{className:"text-[9px]",children:ge(s.sender.name)})]}),e.jsxs("div",{className:p.cn("space-y-0.5",r?"items-end":"items-start"),children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-[11px] font-medium",children:s.sender.name}),e.jsx(A,{channel:s.channel})]}),e.jsxs("div",{className:p.cn("rounded-xl px-3 py-2 text-sm",r?"bg-primary text-primary-foreground rounded-tr-sm":"bg-muted rounded-tl-sm"),children:[e.jsx("p",{className:"whitespace-pre-wrap break-words",children:s.content}),s.attachments&&s.attachments.length>0&&e.jsx("div",{className:"mt-2 space-y-1",children:s.attachments.map(l=>e.jsxs("a",{href:l.url,target:"_blank",rel:"noopener noreferrer",className:p.cn("flex items-center gap-1 rounded px-2 py-1 text-[11px] underline-offset-2 hover:underline",r?"bg-primary-foreground/10":"bg-background"),children:[l.name,l.size&&e.jsxs("span",{className:"opacity-60",children:["(",(l.size/1024).toFixed(0),"KB)"]})]},l.id))})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"text-[10px] text-muted-foreground",children:je(s.createdAt)}),r&&s.readAt&&e.jsxs("span",{className:"text-[10px] text-muted-foreground",children:["· ",a("inbox.read")]})]})]})]})}function ve(s,n){const a=s instanceof Date?s:new Date(s),l=new Date().getTime()-a.getTime(),t=Math.floor(l/(1e3*60*60*24));return t===0?n("date.today"):t===1?n("date.yesterday"):t<7?a.toLocaleDateString(void 0,{weekday:"long"}):a.toLocaleDateString()}function ye(s,n){const a=[];let r="";for(const l of s){const t=ve(l.createdAt,n);t!==r&&(r=t,a.push({date:t,messages:[]})),a[a.length-1].messages.push(l)}return a}function k({messages:s,className:n}){const{t:a}=N.useLocale(),r=h.useRef(null);h.useEffect(()=>{r.current&&(r.current.scrollTop=r.current.scrollHeight)},[s.length]);const l=h.useMemo(()=>ye(s,a),[s,a]);return s.length===0?e.jsx("div",{className:p.cn("flex flex-1 items-center justify-center text-muted-foreground",n),children:e.jsx("p",{className:"text-sm",children:a("inbox.noMessages")})}):e.jsx(D.ScrollArea,{className:p.cn("flex-1",n),ref:r,children:e.jsx("div",{className:"space-y-4 p-4",children:l.map(t=>e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"flex-1 border-t"}),e.jsx("span",{className:"text-[10px] font-medium text-muted-foreground shrink-0",children:t.date}),e.jsx("div",{className:"flex-1 border-t"})]}),t.messages.map(c=>e.jsx(Q,{message:c},c.id))]},t.date))})})}function E({onSend:s,placeholder:n,disabled:a=!1,className:r}){const{t:l}=N.useLocale(),[t,c]=h.useState(""),x=()=>{const m=t.trim();m&&(s(m),c(""))},o=m=>{m.key==="Enter"&&!m.shiftKey&&(m.preventDefault(),x())};return e.jsxs("div",{className:p.cn("border-t p-3",r),children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(I.Textarea,{value:t,onChange:m=>c(m.target.value),onKeyDown:o,placeholder:n??l("inbox.typeReply"),disabled:a,rows:2,className:"min-h-[60px] resize-none text-sm"}),e.jsx(V.Button,{size:"icon",onClick:x,disabled:a||!t.trim(),className:"shrink-0 self-end",children:e.jsx(le.Send,{className:"h-4 w-4"})})]}),e.jsx("p",{className:"mt-1 text-[10px] text-muted-foreground",children:l("inbox.enterToSendHint")})]})}function Z({tickets:s,messages:n,selectedTicketId:a,defaultSelectedTicketId:r,autoSelectFirstTicket:l=!1,onTicketSelect:t,onReply:c,onStatusChange:x,onAssign:o,onPriorityChange:m}){const[S,j]=h.useState(r),i=a??S;h.useEffect(()=>{var v;if(!l||i)return;const d=(v=s[0])==null?void 0:v.id;d&&(a===void 0&&j(d),t==null||t(d))},[l,i,s,a,t]);const T=h.useCallback(d=>{a||j(d),t==null||t(d)},[a,t]),f=h.useMemo(()=>s.find(d=>d.id===i),[s,i]),L=h.useMemo(()=>i?n.filter(d=>d.ticketId===i):[],[n,i]),M=h.useCallback(d=>{i&&(c==null||c(i,d,f==null?void 0:f.channel))},[i,f,c]),w=h.useCallback(d=>{i&&(x==null||x(i,d))},[i,x]),u=h.useCallback(d=>{i&&(o==null||o(i,d))},[i,o]),b=h.useCallback(d=>{i&&(m==null||m(i,d))},[i,m]);return{selectedTicketId:i,selectedTicket:f,threadMessages:L,handleTicketSelect:T,handleReply:M,handleStatusChange:w,handleAssign:u,handlePriorityChange:b}}function G({tickets:s,messages:n,agents:a=[],selectedTicketId:r,defaultSelectedTicketId:l,autoSelectFirstTicket:t=!1,onTicketSelect:c,onReply:x,onStatusChange:o,onAssign:m,onPriorityChange:S,sidebarSearchQuery:j,defaultSidebarSearchQuery:i,onSidebarSearchQueryChange:T,sidebarStatusFilter:f,defaultSidebarStatusFilter:L,onSidebarStatusFilterChange:M,renderTicketItem:w,renderNoSelectionState:u,height:b=600,className:d}){const{t:v}=N.useLocale(),{selectedTicketId:J,selectedTicket:F,threadMessages:P,handleTicketSelect:W,handleReply:X,handleStatusChange:Y,handleAssign:ee,handlePriorityChange:se}=Z({tickets:s,messages:n,selectedTicketId:r,defaultSelectedTicketId:l,autoSelectFirstTicket:t,onTicketSelect:c,onReply:x,onStatusChange:o,onAssign:m,onPriorityChange:S});return e.jsxs("div",{className:p.cn("flex overflow-hidden rounded-lg border bg-background",d),style:{height:b},children:[e.jsx(U,{tickets:s,selectedTicketId:J,onTicketSelect:W,searchQuery:j,defaultSearchQuery:i,onSearchQueryChange:T,statusFilter:f,defaultStatusFilter:L,onStatusFilterChange:M,renderTicketItem:w}),e.jsx("div",{className:"flex flex-1 flex-col min-w-0",children:F?e.jsxs(e.Fragment,{children:[e.jsx(_,{ticket:F,agents:a,onStatusChange:Y,onPriorityChange:se,onAssign:ee}),e.jsx(k,{messages:P}),e.jsx(E,{onSend:X})]}):e.jsx("div",{className:"flex flex-1 items-center justify-center text-muted-foreground",children:u??e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-sm font-medium",children:v("inbox.selectConversation")}),e.jsx("p",{className:"text-xs mt-1",children:v("inbox.selectConversationHint")})]})})})]})}G.displayName="SharedInbox";exports.InboxAssignment=R;exports.InboxChannelChip=A;exports.InboxComposer=E;exports.InboxHeader=_;exports.InboxMessageBubble=Q;exports.InboxSidebar=U;exports.InboxSlaBadge=K;exports.InboxThread=k;exports.InboxTicketItem=H;exports.SharedInbox=G;exports.useSharedInbox=Z;
22
+ //# sourceMappingURL=shared-inbox-DWEKfDX3.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-inbox-DWEKfDX3.cjs","sources":["../node_modules/lucide-react/dist/esm/icons/message-circle.js","../node_modules/lucide-react/dist/esm/icons/share-2.js","../node_modules/lucide-react/dist/esm/icons/smartphone.js","../node_modules/lucide-react/dist/esm/icons/user-plus.js","../src/components/messaging/shared-inbox/inbox-channel-chip.tsx","../src/components/messaging/shared-inbox/inbox-sla-badge.tsx","../src/components/messaging/shared-inbox/inbox-ticket-item.tsx","../src/components/messaging/shared-inbox/inbox-sidebar.tsx","../src/components/messaging/shared-inbox/inbox-assignment.tsx","../src/components/messaging/shared-inbox/inbox-header.tsx","../src/components/messaging/shared-inbox/inbox-message-bubble.tsx","../src/components/messaging/shared-inbox/inbox-thread.tsx","../src/components/messaging/shared-inbox/inbox-composer.tsx","../src/components/messaging/shared-inbox/use-shared-inbox.ts","../src/components/messaging/shared-inbox/shared-inbox.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst MessageCircle = createLucideIcon(\"MessageCircle\", [\n [\"path\", { d: \"M7.9 20A9 9 0 1 0 4 16.1L2 22Z\", key: \"vv11sd\" }]\n]);\n\nexport { MessageCircle as default };\n//# sourceMappingURL=message-circle.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Share2 = createLucideIcon(\"Share2\", [\n [\"circle\", { cx: \"18\", cy: \"5\", r: \"3\", key: \"gq8acd\" }],\n [\"circle\", { cx: \"6\", cy: \"12\", r: \"3\", key: \"w7nqdw\" }],\n [\"circle\", { cx: \"18\", cy: \"19\", r: \"3\", key: \"1xt0gg\" }],\n [\"line\", { x1: \"8.59\", x2: \"15.42\", y1: \"13.51\", y2: \"17.49\", key: \"47mynk\" }],\n [\"line\", { x1: \"15.41\", x2: \"8.59\", y1: \"6.51\", y2: \"10.49\", key: \"1n3mei\" }]\n]);\n\nexport { Share2 as default };\n//# sourceMappingURL=share-2.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Smartphone = createLucideIcon(\"Smartphone\", [\n [\"rect\", { width: \"14\", height: \"20\", x: \"5\", y: \"2\", rx: \"2\", ry: \"2\", key: \"1yt0o3\" }],\n [\"path\", { d: \"M12 18h.01\", key: \"mhygvu\" }]\n]);\n\nexport { Smartphone as default };\n//# sourceMappingURL=smartphone.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst UserPlus = createLucideIcon(\"UserPlus\", [\n [\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\", key: \"1yyitq\" }],\n [\"circle\", { cx: \"9\", cy: \"7\", r: \"4\", key: \"nufk8\" }],\n [\"line\", { x1: \"19\", x2: \"19\", y1: \"8\", y2: \"14\", key: \"1bvyxn\" }],\n [\"line\", { x1: \"22\", x2: \"16\", y1: \"11\", y2: \"11\", key: \"1shjgl\" }]\n]);\n\nexport { UserPlus as default };\n//# sourceMappingURL=user-plus.js.map\n","import { Mail, MessageCircle, Phone, Share2, Smartphone, MessageSquare } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { Badge } from '@/components/ui/badge'\nimport type { InboxChannel } from './inbox-types'\n\nconst channelConfig: Record<InboxChannel, { icon: React.ReactNode; labelKey: string; color: string }> = {\n email: {\n icon: <Mail className=\"h-3 w-3\" />,\n labelKey: 'inbox.channel.email',\n color: 'bg-blue-100 text-blue-700 border-blue-200',\n },\n chat: {\n icon: <MessageCircle className=\"h-3 w-3\" />,\n labelKey: 'inbox.channel.chat',\n color: 'bg-green-100 text-green-700 border-green-200',\n },\n phone: {\n icon: <Phone className=\"h-3 w-3\" />,\n labelKey: 'inbox.channel.phone',\n color: 'bg-purple-100 text-purple-700 border-purple-200',\n },\n social: {\n icon: <Share2 className=\"h-3 w-3\" />,\n labelKey: 'inbox.channel.social',\n color: 'bg-pink-100 text-pink-700 border-pink-200',\n },\n sms: {\n icon: <Smartphone className=\"h-3 w-3\" />,\n labelKey: 'inbox.channel.sms',\n color: 'bg-orange-100 text-orange-700 border-orange-200',\n },\n whatsapp: {\n icon: <MessageSquare className=\"h-3 w-3\" />,\n labelKey: 'inbox.channel.whatsapp',\n color: 'bg-emerald-100 text-emerald-700 border-emerald-200',\n },\n}\n\nexport interface InboxChannelChipProps {\n channel: InboxChannel\n className?: string\n}\n\nexport function InboxChannelChip({ channel, className }: InboxChannelChipProps) {\n const { t } = useLocale()\n const config = channelConfig[channel] ?? channelConfig.email\n\n return (\n <Badge\n variant=\"outline\"\n className={cn('gap-1 text-[10px] px-1.5 py-0 font-medium', config.color, className)}\n >\n {config.icon}\n {t(config.labelKey)}\n </Badge>\n )\n}\n","import { Clock } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { Badge } from '@/components/ui/badge'\n\nexport interface InboxSlaBadgeProps {\n deadline: Date | string\n className?: string\n}\n\nfunction formatTimeRemaining(deadline: Date, t: (key: string) => string): string {\n const now = new Date()\n const diff = deadline.getTime() - now.getTime()\n\n if (diff < 0) {\n const overdue = Math.abs(diff)\n const hours = Math.floor(overdue / (1000 * 60 * 60))\n const minutes = Math.floor((overdue % (1000 * 60 * 60)) / (1000 * 60))\n if (hours > 0) return `${hours}h ${minutes}m ${t('inbox.overdue')}`\n return `${minutes}m ${t('inbox.overdue')}`\n }\n\n const hours = Math.floor(diff / (1000 * 60 * 60))\n const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60))\n if (hours > 24) {\n const days = Math.floor(hours / 24)\n return `${days}d ${t('inbox.left')}`\n }\n if (hours > 0) return `${hours}h ${minutes}m ${t('inbox.left')}`\n return `${minutes}m ${t('inbox.left')}`\n}\n\nexport function InboxSlaBadge({ deadline, className }: InboxSlaBadgeProps) {\n const { t } = useLocale()\n const deadlineDate = deadline instanceof Date ? deadline : new Date(deadline)\n const now = new Date()\n const isOverdue = deadlineDate.getTime() < now.getTime()\n const diff = deadlineDate.getTime() - now.getTime()\n const isUrgent = diff > 0 && diff < 1000 * 60 * 60 // Less than 1 hour\n\n return (\n <Badge\n variant=\"outline\"\n className={cn(\n 'gap-1 text-[10px] px-1.5 py-0 font-medium',\n isOverdue && 'bg-destructive/10 text-destructive border-destructive/30 animate-pulse',\n isUrgent && !isOverdue && 'bg-warning/10 text-warning border-warning/30',\n !isOverdue && !isUrgent && 'bg-muted text-muted-foreground',\n className\n )}\n >\n <Clock className=\"h-2.5 w-2.5\" />\n {formatTimeRemaining(deadlineDate, t)}\n </Badge>\n )\n}\n","import { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\nimport { InboxChannelChip } from './inbox-channel-chip'\nimport { InboxSlaBadge } from './inbox-sla-badge'\nimport type { InboxTicket } from './inbox-types'\n\nexport interface InboxTicketItemProps {\n ticket: InboxTicket\n isSelected: boolean\n onClick: () => void\n className?: string\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(' ')\n .map((n) => n[0])\n .join('')\n .toUpperCase()\n .slice(0, 2)\n}\n\nfunction formatRelativeTime(date: Date | string, t: (key: string, params?: Record<string, string | number>) => string): string {\n const d = date instanceof Date ? date : new Date(date)\n const now = new Date()\n const diff = now.getTime() - d.getTime()\n const minutes = Math.floor(diff / (1000 * 60))\n const hours = Math.floor(diff / (1000 * 60 * 60))\n const days = Math.floor(diff / (1000 * 60 * 60 * 24))\n\n if (minutes < 1) return t('inbox.now')\n if (minutes < 60) return t('record.minutesAgo', { count: minutes })\n if (hours < 24) return t('record.hoursAgo', { count: hours })\n if (days < 7) return t('record.daysAgo', { count: days })\n return d.toLocaleDateString()\n}\n\nconst priorityIndicator: Record<string, string> = {\n low: '',\n medium: 'border-l-warning',\n high: 'border-l-orange-500',\n urgent: 'border-l-destructive',\n}\n\nexport function InboxTicketItem({\n ticket,\n isSelected,\n onClick,\n className,\n}: InboxTicketItemProps) {\n const { t } = useLocale()\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n 'flex w-full gap-3 border-b border-l-2 px-3 py-3 text-left transition-colors',\n 'hover:bg-muted/50',\n isSelected && 'bg-muted border-l-primary',\n !isSelected && (priorityIndicator[ticket.priority] || 'border-l-transparent'),\n ticket.unreadCount && ticket.unreadCount > 0 && !isSelected && 'bg-primary/5',\n className\n )}\n >\n <Avatar className=\"h-8 w-8 shrink-0\">\n <AvatarImage src={ticket.contact.avatar} alt={ticket.contact.name} />\n <AvatarFallback className=\"text-[10px]\">{getInitials(ticket.contact.name)}</AvatarFallback>\n </Avatar>\n\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center justify-between gap-1\">\n <span className={cn('text-sm truncate', ticket.unreadCount && ticket.unreadCount > 0 ? 'font-semibold' : 'font-medium')}>\n {ticket.contact.name}\n </span>\n <span className=\"text-[10px] text-muted-foreground shrink-0\">\n {formatRelativeTime(ticket.lastMessageAt, t)}\n </span>\n </div>\n\n <p className=\"text-xs font-medium truncate text-foreground/90\">{ticket.subject}</p>\n\n {ticket.lastMessage && (\n <p className=\"text-[11px] text-muted-foreground truncate mt-0.5\">{ticket.lastMessage}</p>\n )}\n\n <div className=\"flex items-center gap-1.5 mt-1.5\">\n <InboxChannelChip channel={ticket.channel} />\n {ticket.slaDeadline && <InboxSlaBadge deadline={ticket.slaDeadline} />}\n {ticket.unreadCount && ticket.unreadCount > 0 && (\n <span className=\"ml-auto flex h-4 min-w-4 items-center justify-center rounded-full bg-primary px-1 text-[9px] font-bold text-primary-foreground\">\n {ticket.unreadCount}\n </span>\n )}\n </div>\n </div>\n </button>\n )\n}\n","import * as React from 'react'\nimport { Search } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { useControllableState } from '@/hooks/use-controllable-state'\nimport { Input } from '@/components/ui/input'\nimport { ScrollArea } from '@/components/ui/scroll-area'\nimport { Tabs, TabsList, TabsTrigger } from '@/components/ui/tabs'\nimport { InboxTicketItem } from './inbox-ticket-item'\nimport type { InboxTicket, TicketStatus } from './inbox-types'\n\nexport interface InboxSidebarProps {\n tickets: InboxTicket[]\n selectedTicketId?: string\n onTicketSelect: (ticketId: string) => void\n searchQuery?: string\n defaultSearchQuery?: string\n onSearchQueryChange?: (query: string) => void\n statusFilter?: 'all' | TicketStatus\n defaultStatusFilter?: 'all' | TicketStatus\n onStatusFilterChange?: (status: 'all' | TicketStatus) => void\n renderTicketItem?: (\n ticket: InboxTicket,\n context: { isSelected: boolean; defaultNode: React.ReactNode; onSelect: () => void }\n ) => React.ReactNode\n className?: string\n}\n\nexport function InboxSidebar({\n tickets,\n selectedTicketId,\n onTicketSelect,\n searchQuery: controlledSearch,\n defaultSearchQuery = '',\n onSearchQueryChange,\n statusFilter: controlledStatusFilter,\n defaultStatusFilter = 'all',\n onStatusFilterChange,\n renderTicketItem,\n className,\n}: InboxSidebarProps) {\n const { t } = useLocale()\n const [search, setSearch] = useControllableState({\n value: controlledSearch,\n defaultValue: defaultSearchQuery,\n onChange: onSearchQueryChange,\n })\n const [statusFilter, setStatusFilter] = useControllableState<'all' | TicketStatus>({\n value: controlledStatusFilter,\n defaultValue: defaultStatusFilter,\n onChange: onStatusFilterChange,\n })\n\n const filtered = React.useMemo(() => {\n let result = tickets\n if (statusFilter !== 'all') {\n result = result.filter((t) => t.status === statusFilter)\n }\n if (search) {\n const q = search.toLowerCase()\n result = result.filter(\n (t) =>\n t.subject.toLowerCase().includes(q) ||\n t.contact.name.toLowerCase().includes(q) ||\n t.lastMessage?.toLowerCase().includes(q)\n )\n }\n return result\n }, [tickets, statusFilter, search])\n\n const counts = React.useMemo(() => ({\n all: tickets.length,\n open: tickets.filter((t) => t.status === 'open').length,\n pending: tickets.filter((t) => t.status === 'pending').length,\n resolved: tickets.filter((t) => t.status === 'resolved').length,\n }), [tickets])\n\n return (\n <div className={cn('flex h-full w-[340px] flex-col border-r bg-background', className)}>\n {/* Search */}\n <div className=\"border-b px-3 py-2.5\">\n <div className=\"relative\">\n <Search className=\"absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground\" />\n <Input\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder={t('inbox.searchConversations')}\n className=\"h-8 pl-8 text-xs\"\n />\n </div>\n </div>\n\n {/* Status tabs */}\n <Tabs value={statusFilter} onValueChange={(v) => setStatusFilter(v as typeof statusFilter)}>\n <TabsList className=\"w-full justify-start rounded-none border-b bg-transparent px-3 py-0 h-auto\">\n <TabsTrigger value=\"all\" className=\"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:shadow-none text-xs py-2\">\n {t('inbox.filter.all')} ({counts.all})\n </TabsTrigger>\n <TabsTrigger value=\"open\" className=\"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:shadow-none text-xs py-2\">\n {t('inbox.filter.open')} ({counts.open})\n </TabsTrigger>\n <TabsTrigger value=\"pending\" className=\"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:shadow-none text-xs py-2\">\n {t('inbox.filter.pending')} ({counts.pending})\n </TabsTrigger>\n <TabsTrigger value=\"resolved\" className=\"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:shadow-none text-xs py-2\">\n {t('inbox.filter.resolved')} ({counts.resolved})\n </TabsTrigger>\n </TabsList>\n </Tabs>\n\n {/* Ticket list */}\n <ScrollArea className=\"flex-1\">\n {filtered.length > 0 ? (\n filtered.map((ticket) => {\n const isSelected = selectedTicketId === ticket.id\n const onSelect = () => onTicketSelect(ticket.id)\n const defaultNode = (\n <InboxTicketItem\n key={ticket.id}\n ticket={ticket}\n isSelected={isSelected}\n onClick={onSelect}\n />\n )\n\n return (\n <React.Fragment key={ticket.id}>\n {renderTicketItem\n ? renderTicketItem(ticket, { isSelected, defaultNode, onSelect })\n : defaultNode}\n </React.Fragment>\n )\n })\n ) : (\n <div className=\"flex items-center justify-center py-8 text-sm text-muted-foreground\">\n {t('inbox.noConversations')}\n </div>\n )}\n </ScrollArea>\n </div>\n )\n}\n","import { UserPlus } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\nimport { Button } from '@/components/ui/button'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu'\nimport type { InboxAgent } from './inbox-types'\n\nexport interface InboxAssignmentProps {\n assignee?: InboxAgent\n agents: InboxAgent[]\n onAssign: (agentId: string) => void\n className?: string\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(' ')\n .map((n) => n[0])\n .join('')\n .toUpperCase()\n .slice(0, 2)\n}\n\nexport function InboxAssignment({\n assignee,\n agents,\n onAssign,\n className,\n}: InboxAssignmentProps) {\n const { t } = useLocale()\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn('gap-1.5 h-7', className)}\n >\n {assignee ? (\n <>\n <Avatar className=\"h-4 w-4\">\n <AvatarImage src={assignee.avatar} alt={assignee.name} />\n <AvatarFallback className=\"text-[8px]\">{getInitials(assignee.name)}</AvatarFallback>\n </Avatar>\n <span className=\"text-xs\">{assignee.name}</span>\n </>\n ) : (\n <>\n <UserPlus className=\"h-3 w-3\" />\n <span className=\"text-xs\">{t('inbox.assign')}</span>\n </>\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuLabel className=\"text-xs\">{t('inbox.assignTo')}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {agents.map((agent) => (\n <DropdownMenuItem\n key={agent.id}\n onClick={() => onAssign(agent.id)}\n className=\"gap-2\"\n >\n <Avatar className=\"h-5 w-5\">\n <AvatarImage src={agent.avatar} alt={agent.name} />\n <AvatarFallback className=\"text-[8px]\">{getInitials(agent.name)}</AvatarFallback>\n </Avatar>\n <span className=\"text-sm\">{agent.name}</span>\n {agent.status === 'online' && (\n <span className=\"ml-auto h-2 w-2 rounded-full bg-green-500\" />\n )}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n","import { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { Badge } from '@/components/ui/badge'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/ui/select'\nimport { InboxChannelChip } from './inbox-channel-chip'\nimport { InboxSlaBadge } from './inbox-sla-badge'\nimport { InboxAssignment } from './inbox-assignment'\nimport type { InboxTicket, InboxAgent, TicketStatus, TicketPriority } from './inbox-types'\n\nconst statusOptions: { value: TicketStatus; labelKey: string }[] = [\n { value: 'open', labelKey: 'status.open' },\n { value: 'pending', labelKey: 'status.pending' },\n { value: 'resolved', labelKey: 'status.resolved' },\n { value: 'closed', labelKey: 'status.closed' },\n]\n\nconst priorityOptions: { value: TicketPriority; labelKey: string }[] = [\n { value: 'low', labelKey: 'status.low' },\n { value: 'medium', labelKey: 'status.medium' },\n { value: 'high', labelKey: 'status.high' },\n { value: 'urgent', labelKey: 'status.urgent' },\n]\n\nexport interface InboxHeaderProps {\n ticket: InboxTicket\n agents: InboxAgent[]\n onStatusChange?: (status: TicketStatus) => void\n onPriorityChange?: (priority: TicketPriority) => void\n onAssign?: (agentId: string) => void\n className?: string\n}\n\nexport function InboxHeader({\n ticket,\n agents,\n onStatusChange,\n onPriorityChange,\n onAssign,\n className,\n}: InboxHeaderProps) {\n const { t } = useLocale()\n\n return (\n <div className={cn('border-b px-4 py-2.5', className)}>\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"min-w-0 flex-1\">\n <h2 className=\"text-sm font-semibold truncate\">{ticket.subject}</h2>\n <div className=\"flex items-center gap-2 mt-1\">\n <span className=\"text-xs text-muted-foreground\">{ticket.contact.name}</span>\n <InboxChannelChip channel={ticket.channel} />\n {ticket.slaDeadline && <InboxSlaBadge deadline={ticket.slaDeadline} />}\n {ticket.tags?.map((tag) => (\n <Badge key={tag} variant=\"secondary\" className=\"text-[10px] px-1.5 py-0\">\n {tag}\n </Badge>\n ))}\n </div>\n </div>\n\n <div className=\"flex items-center gap-2 shrink-0\">\n <Select\n value={ticket.status}\n onValueChange={(v) => onStatusChange?.(v as TicketStatus)}\n >\n <SelectTrigger size=\"sm\" className=\"w-[110px] h-7 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {statusOptions.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {t(opt.labelKey)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <Select\n value={ticket.priority}\n onValueChange={(v) => onPriorityChange?.(v as TicketPriority)}\n >\n <SelectTrigger size=\"sm\" className=\"w-[100px] h-7 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {priorityOptions.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {t(opt.labelKey)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {onAssign && (\n <InboxAssignment\n assignee={ticket.assignee}\n agents={agents}\n onAssign={onAssign}\n />\n )}\n </div>\n </div>\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\nimport { InboxChannelChip } from './inbox-channel-chip'\nimport type { InboxMessage } from './inbox-types'\n\nexport interface InboxMessageBubbleProps {\n message: InboxMessage\n className?: string\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(' ')\n .map((n) => n[0])\n .join('')\n .toUpperCase()\n .slice(0, 2)\n}\n\nfunction formatTime(date: Date | string): string {\n const d = date instanceof Date ? date : new Date(date)\n return d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })\n}\n\nexport function InboxMessageBubble({ message, className }: InboxMessageBubbleProps) {\n const { t } = useLocale()\n const isAgent = message.isAgent\n\n return (\n <div\n className={cn(\n 'flex gap-2 max-w-[75%]',\n isAgent ? 'ml-auto flex-row-reverse' : 'mr-auto',\n className\n )}\n >\n <Avatar className=\"h-7 w-7 shrink-0 mt-1\">\n <AvatarImage src={message.sender.avatar} alt={message.sender.name} />\n <AvatarFallback className=\"text-[9px]\">{getInitials(message.sender.name)}</AvatarFallback>\n </Avatar>\n\n <div className={cn('space-y-0.5', isAgent ? 'items-end' : 'items-start')}>\n <div className=\"flex items-center gap-1.5\">\n <span className=\"text-[11px] font-medium\">{message.sender.name}</span>\n <InboxChannelChip channel={message.channel} />\n </div>\n\n <div\n className={cn(\n 'rounded-xl px-3 py-2 text-sm',\n isAgent\n ? 'bg-primary text-primary-foreground rounded-tr-sm'\n : 'bg-muted rounded-tl-sm'\n )}\n >\n <p className=\"whitespace-pre-wrap break-words\">{message.content}</p>\n\n {message.attachments && message.attachments.length > 0 && (\n <div className=\"mt-2 space-y-1\">\n {message.attachments.map((att) => (\n <a\n key={att.id}\n href={att.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n 'flex items-center gap-1 rounded px-2 py-1 text-[11px] underline-offset-2 hover:underline',\n isAgent ? 'bg-primary-foreground/10' : 'bg-background'\n )}\n >\n {att.name}\n {att.size && (\n <span className=\"opacity-60\">\n ({(att.size / 1024).toFixed(0)}KB)\n </span>\n )}\n </a>\n ))}\n </div>\n )}\n </div>\n\n <div className=\"flex items-center gap-1\">\n <span className=\"text-[10px] text-muted-foreground\">{formatTime(message.createdAt)}</span>\n {isAgent && message.readAt && (\n <span className=\"text-[10px] text-muted-foreground\">· {t('inbox.read')}</span>\n )}\n </div>\n </div>\n </div>\n )\n}\n","import * as React from 'react'\nimport { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { ScrollArea } from '@/components/ui/scroll-area'\nimport { InboxMessageBubble } from './inbox-message-bubble'\nimport type { InboxMessage } from './inbox-types'\n\nexport interface InboxThreadProps {\n messages: InboxMessage[]\n className?: string\n}\n\nfunction formatDateDivider(date: Date | string, t: (key: string) => string): string {\n const d = date instanceof Date ? date : new Date(date)\n const now = new Date()\n const diff = now.getTime() - d.getTime()\n const days = Math.floor(diff / (1000 * 60 * 60 * 24))\n\n if (days === 0) return t('date.today')\n if (days === 1) return t('date.yesterday')\n if (days < 7) return d.toLocaleDateString(undefined, { weekday: 'long' })\n return d.toLocaleDateString()\n}\n\nfunction groupMessagesByDate(messages: InboxMessage[], t: (key: string) => string): { date: string; messages: InboxMessage[] }[] {\n const groups: { date: string; messages: InboxMessage[] }[] = []\n let currentDate = ''\n\n for (const message of messages) {\n const dateStr = formatDateDivider(message.createdAt, t)\n if (dateStr !== currentDate) {\n currentDate = dateStr\n groups.push({ date: dateStr, messages: [] })\n }\n groups[groups.length - 1].messages.push(message)\n }\n\n return groups\n}\n\nexport function InboxThread({ messages, className }: InboxThreadProps) {\n const { t } = useLocale()\n const scrollRef = React.useRef<HTMLDivElement>(null)\n\n // Auto-scroll to bottom when new messages arrive\n React.useEffect(() => {\n if (scrollRef.current) {\n scrollRef.current.scrollTop = scrollRef.current.scrollHeight\n }\n }, [messages.length])\n\n const groups = React.useMemo(() => groupMessagesByDate(messages, t), [messages, t])\n\n if (messages.length === 0) {\n return (\n <div className={cn('flex flex-1 items-center justify-center text-muted-foreground', className)}>\n <p className=\"text-sm\">{t('inbox.noMessages')}</p>\n </div>\n )\n }\n\n return (\n <ScrollArea className={cn('flex-1', className)} ref={scrollRef}>\n <div className=\"space-y-4 p-4\">\n {groups.map((group) => (\n <div key={group.date} className=\"space-y-3\">\n {/* Date divider */}\n <div className=\"flex items-center gap-3\">\n <div className=\"flex-1 border-t\" />\n <span className=\"text-[10px] font-medium text-muted-foreground shrink-0\">\n {group.date}\n </span>\n <div className=\"flex-1 border-t\" />\n </div>\n\n {/* Messages */}\n {group.messages.map((message) => (\n <InboxMessageBubble key={message.id} message={message} />\n ))}\n </div>\n ))}\n </div>\n </ScrollArea>\n )\n}\n","import * as React from 'react'\nimport { Send } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { Button } from '@/components/ui/button'\nimport { Textarea } from '@/components/ui/textarea'\n\nexport interface InboxComposerProps {\n onSend: (content: string) => void\n placeholder?: string\n disabled?: boolean\n className?: string\n}\n\nexport function InboxComposer({\n onSend,\n placeholder,\n disabled = false,\n className,\n}: InboxComposerProps) {\n const { t } = useLocale()\n const [content, setContent] = React.useState('')\n\n const handleSend = () => {\n const trimmed = content.trim()\n if (!trimmed) return\n onSend(trimmed)\n setContent('')\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n handleSend()\n }\n }\n\n return (\n <div className={cn('border-t p-3', className)}>\n <div className=\"flex gap-2\">\n <Textarea\n value={content}\n onChange={(e) => setContent(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder ?? t('inbox.typeReply')}\n disabled={disabled}\n rows={2}\n className=\"min-h-[60px] resize-none text-sm\"\n />\n <Button\n size=\"icon\"\n onClick={handleSend}\n disabled={disabled || !content.trim()}\n className=\"shrink-0 self-end\"\n >\n <Send className=\"h-4 w-4\" />\n </Button>\n </div>\n <p className=\"mt-1 text-[10px] text-muted-foreground\">\n {t('inbox.enterToSendHint')}\n </p>\n </div>\n )\n}\n","import * as React from 'react'\nimport type { InboxTicket, InboxMessage, TicketStatus, TicketPriority, InboxChannel } from './inbox-types'\n\nexport interface UseSharedInboxProps {\n tickets: InboxTicket[]\n messages: InboxMessage[]\n selectedTicketId?: string\n defaultSelectedTicketId?: string\n autoSelectFirstTicket?: boolean\n onTicketSelect?: (ticketId: string) => void\n onReply?: (ticketId: string, content: string, channel?: InboxChannel) => void\n onStatusChange?: (ticketId: string, status: TicketStatus) => void\n onAssign?: (ticketId: string, agentId: string) => void\n onPriorityChange?: (ticketId: string, priority: TicketPriority) => void\n}\n\nexport function useSharedInbox({\n tickets,\n messages,\n selectedTicketId: controlledSelectedId,\n defaultSelectedTicketId,\n autoSelectFirstTicket = false,\n onTicketSelect,\n onReply,\n onStatusChange,\n onAssign,\n onPriorityChange,\n}: UseSharedInboxProps) {\n const [internalSelectedId, setInternalSelectedId] = React.useState<string | undefined>(\n defaultSelectedTicketId\n )\n const selectedTicketId = controlledSelectedId ?? internalSelectedId\n\n React.useEffect(() => {\n if (!autoSelectFirstTicket) return\n if (selectedTicketId) return\n const firstTicketId = tickets[0]?.id\n if (!firstTicketId) return\n if (controlledSelectedId === undefined) {\n setInternalSelectedId(firstTicketId)\n }\n onTicketSelect?.(firstTicketId)\n }, [autoSelectFirstTicket, selectedTicketId, tickets, controlledSelectedId, onTicketSelect])\n\n const handleTicketSelect = React.useCallback(\n (ticketId: string) => {\n if (!controlledSelectedId) {\n setInternalSelectedId(ticketId)\n }\n onTicketSelect?.(ticketId)\n },\n [controlledSelectedId, onTicketSelect]\n )\n\n const selectedTicket = React.useMemo(\n () => tickets.find((t) => t.id === selectedTicketId),\n [tickets, selectedTicketId]\n )\n\n const threadMessages = React.useMemo(\n () => (selectedTicketId ? messages.filter((m) => m.ticketId === selectedTicketId) : []),\n [messages, selectedTicketId]\n )\n\n const handleReply = React.useCallback(\n (content: string) => {\n if (selectedTicketId) {\n onReply?.(selectedTicketId, content, selectedTicket?.channel)\n }\n },\n [selectedTicketId, selectedTicket, onReply]\n )\n\n const handleStatusChange = React.useCallback(\n (status: TicketStatus) => {\n if (selectedTicketId) {\n onStatusChange?.(selectedTicketId, status)\n }\n },\n [selectedTicketId, onStatusChange]\n )\n\n const handleAssign = React.useCallback(\n (agentId: string) => {\n if (selectedTicketId) {\n onAssign?.(selectedTicketId, agentId)\n }\n },\n [selectedTicketId, onAssign]\n )\n\n const handlePriorityChange = React.useCallback(\n (priority: TicketPriority) => {\n if (selectedTicketId) {\n onPriorityChange?.(selectedTicketId, priority)\n }\n },\n [selectedTicketId, onPriorityChange]\n )\n\n return {\n selectedTicketId,\n selectedTicket,\n threadMessages,\n handleTicketSelect,\n handleReply,\n handleStatusChange,\n handleAssign,\n handlePriorityChange,\n }\n}\n","import { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\nimport { InboxSidebar } from './inbox-sidebar'\nimport { InboxHeader } from './inbox-header'\nimport { InboxThread } from './inbox-thread'\nimport { InboxComposer } from './inbox-composer'\nimport { useSharedInbox } from './use-shared-inbox'\nimport type { SharedInboxProps } from './inbox-types'\n\n/**\n * SharedInbox - Omnichannel conversation UI for CRM/helpdesk applications.\n *\n * Features:\n * - Ticket sidebar with search, status filtering, and unread indicators\n * - Message thread with date grouping and agent/contact bubbles\n * - Channel chips (email, chat, phone, social, SMS, WhatsApp)\n * - SLA timer badges\n * - Agent assignment\n * - Reply composer with Enter-to-send\n *\n * @example\n * ```tsx\n * <SharedInbox\n * tickets={tickets}\n * messages={messages}\n * agents={agents}\n * onReply={(ticketId, content) => sendMessage(ticketId, content)}\n * onStatusChange={(ticketId, status) => updateStatus(ticketId, status)}\n * onAssign={(ticketId, agentId) => assignTicket(ticketId, agentId)}\n * />\n * ```\n */\nfunction SharedInbox({\n tickets,\n messages,\n agents = [],\n selectedTicketId: controlledSelectedId,\n defaultSelectedTicketId,\n autoSelectFirstTicket = false,\n onTicketSelect,\n onReply,\n onStatusChange,\n onAssign,\n onPriorityChange,\n sidebarSearchQuery,\n defaultSidebarSearchQuery,\n onSidebarSearchQueryChange,\n sidebarStatusFilter,\n defaultSidebarStatusFilter,\n onSidebarStatusFilterChange,\n renderTicketItem,\n renderNoSelectionState,\n height = 600,\n className,\n}: SharedInboxProps) {\n const { t } = useLocale()\n const {\n selectedTicketId,\n selectedTicket,\n threadMessages,\n handleTicketSelect,\n handleReply,\n handleStatusChange,\n handleAssign,\n handlePriorityChange,\n } = useSharedInbox({\n tickets,\n messages,\n selectedTicketId: controlledSelectedId,\n defaultSelectedTicketId,\n autoSelectFirstTicket,\n onTicketSelect,\n onReply,\n onStatusChange,\n onAssign,\n onPriorityChange,\n })\n\n return (\n <div\n className={cn('flex overflow-hidden rounded-lg border bg-background', className)}\n style={{ height }}\n >\n {/* Sidebar */}\n <InboxSidebar\n tickets={tickets}\n selectedTicketId={selectedTicketId}\n onTicketSelect={handleTicketSelect}\n searchQuery={sidebarSearchQuery}\n defaultSearchQuery={defaultSidebarSearchQuery}\n onSearchQueryChange={onSidebarSearchQueryChange}\n statusFilter={sidebarStatusFilter}\n defaultStatusFilter={defaultSidebarStatusFilter}\n onStatusFilterChange={onSidebarStatusFilterChange}\n renderTicketItem={renderTicketItem}\n />\n\n {/* Thread area */}\n <div className=\"flex flex-1 flex-col min-w-0\">\n {selectedTicket ? (\n <>\n <InboxHeader\n ticket={selectedTicket}\n agents={agents}\n onStatusChange={handleStatusChange}\n onPriorityChange={handlePriorityChange}\n onAssign={handleAssign}\n />\n <InboxThread messages={threadMessages} />\n <InboxComposer onSend={handleReply} />\n </>\n ) : (\n <div className=\"flex flex-1 items-center justify-center text-muted-foreground\">\n {renderNoSelectionState ?? (\n <div className=\"text-center\">\n <p className=\"text-sm font-medium\">{t('inbox.selectConversation')}</p>\n <p className=\"text-xs mt-1\">{t('inbox.selectConversationHint')}</p>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n )\n}\n\nSharedInbox.displayName = 'SharedInbox'\n\nexport { SharedInbox }\n"],"names":["MessageCircle","createLucideIcon","Share2","Smartphone","UserPlus","channelConfig","jsx","Mail","Phone","MessageSquare","InboxChannelChip","channel","className","t","useLocale","config","jsxs","Badge","cn","formatTimeRemaining","deadline","now","diff","overdue","hours","minutes","InboxSlaBadge","deadlineDate","isOverdue","isUrgent","Clock","getInitials","name","formatRelativeTime","date","d","days","priorityIndicator","InboxTicketItem","ticket","isSelected","onClick","Avatar","AvatarImage","AvatarFallback","InboxSidebar","tickets","selectedTicketId","onTicketSelect","controlledSearch","defaultSearchQuery","onSearchQueryChange","controlledStatusFilter","defaultStatusFilter","onStatusFilterChange","renderTicketItem","search","setSearch","useControllableState","statusFilter","setStatusFilter","filtered","React","result","q","counts","Search","Input","e","Tabs","v","TabsList","TabsTrigger","ScrollArea","onSelect","defaultNode","InboxAssignment","assignee","agents","onAssign","DropdownMenu","DropdownMenuTrigger","Button","Fragment","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","agent","DropdownMenuItem","statusOptions","priorityOptions","InboxHeader","onStatusChange","onPriorityChange","_a","tag","Select","SelectTrigger","SelectValue","SelectContent","opt","SelectItem","formatTime","InboxMessageBubble","message","isAgent","att","formatDateDivider","groupMessagesByDate","messages","groups","currentDate","dateStr","InboxThread","scrollRef","group","InboxComposer","onSend","placeholder","disabled","content","setContent","handleSend","trimmed","handleKeyDown","Textarea","Send","useSharedInbox","controlledSelectedId","defaultSelectedTicketId","autoSelectFirstTicket","onReply","internalSelectedId","setInternalSelectedId","firstTicketId","handleTicketSelect","ticketId","selectedTicket","threadMessages","m","handleReply","handleStatusChange","status","handleAssign","agentId","handlePriorityChange","priority","SharedInbox","sidebarSearchQuery","defaultSidebarSearchQuery","onSidebarSearchQueryChange","sidebarStatusFilter","defaultSidebarStatusFilter","onSidebarStatusFilterChange","renderNoSelectionState","height"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
@@ -0,0 +1,2 @@
1
+ "use strict";const o=require("react/jsx-runtime"),O=require("react");require("react-dom");const f=require("./button-CPuCii0R.cjs"),l=require("./index-Dy_9oyP3.cjs"),s=require("./dialog-DO5i1PED.cjs"),R=require("./locale-provider-BScpm-eC.cjs"),P=require("./x-D-El5XAY.cjs");function T(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const a in e)if(a!=="default"){const r=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,r.get?r:{enumerable:!0,get:()=>e[a]})}}return t.default=e,Object.freeze(t)}const d=T(O);var C=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],q=C.reduce((e,t)=>{const a=f.createSlot(`Primitive.${t}`),r=d.forwardRef((i,n)=>{const{asChild:p,...c}=i,j=p?a:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(j,{...c,ref:n})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),D="Separator",u="horizontal",z=["horizontal","vertical"],h=d.forwardRef((e,t)=>{const{decorative:a,orientation:r=u,...i}=e,n=E(r)?r:u,c=a?{role:"none"}:{"aria-orientation":n==="vertical"?n:void 0,role:"separator"};return o.jsx(q.div,{"data-orientation":n,...c,...i,ref:t})});h.displayName=D;function E(e){return z.includes(e)}var x=h;const v=d.forwardRef(({className:e,orientation:t="horizontal",decorative:a=!0,...r},i)=>o.jsx(x,{ref:i,decorative:a,orientation:t,className:l.cn("shrink-0 bg-border",t==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",e),...r}));v.displayName=x.displayName;const _=s.Root,k=s.Trigger,A=s.Close,g=s.Portal,m=d.forwardRef(({className:e,...t},a)=>o.jsx(s.Overlay,{className:l.cn("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t,ref:a}));m.displayName=s.Overlay.displayName;const F=f.cva("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),S=d.forwardRef(({side:e="right",className:t,children:a,...r},i)=>{const{t:n}=R.useLocale();return o.jsxs(g,{children:[o.jsx(m,{}),o.jsxs(s.Content,{ref:i,className:l.cn(F({side:e}),t),...r,children:[a,o.jsxs(s.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring/50 disabled:pointer-events-none data-[state=open]:bg-secondary",children:[o.jsx(P.X,{className:"h-4 w-4"}),o.jsx("span",{className:"sr-only",children:n("common.close")})]})]})]})});S.displayName=s.Content.displayName;const b=({className:e,...t})=>o.jsx("div",{className:l.cn("flex flex-col space-y-2 text-center sm:text-left",e),...t});b.displayName="SheetHeader";const y=({className:e,...t})=>o.jsx("div",{className:l.cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});y.displayName="SheetFooter";const N=d.forwardRef(({className:e,...t},a)=>o.jsx(s.Title,{ref:a,className:l.cn("text-lg font-semibold text-foreground",e),...t}));N.displayName=s.Title.displayName;const w=d.forwardRef(({className:e,...t},a)=>o.jsx(s.Description,{ref:a,className:l.cn("text-sm text-muted-foreground",e),...t}));w.displayName=s.Description.displayName;exports.Separator=v;exports.Sheet=_;exports.SheetClose=A;exports.SheetContent=S;exports.SheetDescription=w;exports.SheetFooter=y;exports.SheetHeader=b;exports.SheetOverlay=m;exports.SheetPortal=g;exports.SheetTitle=N;exports.SheetTrigger=k;
2
+ //# sourceMappingURL=sheet-C0-aBGln.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet-C0-aBGln.cjs","sources":["../node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-separator/dist/index.mjs","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx"],"sourcesContent":["// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/separator.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Separator\";\nvar DEFAULT_ORIENTATION = \"horizontal\";\nvar ORIENTATIONS = [\"horizontal\", \"vertical\"];\nvar Separator = React.forwardRef((props, forwardedRef) => {\n const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;\n const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;\n const ariaOrientation = orientation === \"vertical\" ? orientation : void 0;\n const semanticProps = decorative ? { role: \"none\" } : { \"aria-orientation\": ariaOrientation, role: \"separator\" };\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-orientation\": orientation,\n ...semanticProps,\n ...domProps,\n ref: forwardedRef\n }\n );\n});\nSeparator.displayName = NAME;\nfunction isValidOrientation(orientation) {\n return ORIENTATIONS.includes(orientation);\n}\nvar Root = Separator;\nexport {\n Root,\n Separator\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react'\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\nimport { cn } from '@/utils/cn'\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className\n )}\n {...props}\n />\n))\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","import * as React from 'react'\nimport * as SheetPrimitive from '@radix-ui/react-dialog'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { X } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n 'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = 'right', className, children, ...props }, ref) => {\n const { t } = useLocale()\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content ref={ref} className={cn(sheetVariants({ side }), className)} {...props}>\n {children}\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring/50 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">{t('common.close')}</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n})\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />\n)\nSheetHeader.displayName = 'SheetHeader'\n\nconst SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n {...props}\n />\n)\nSheetFooter.displayName = 'SheetFooter'\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold text-foreground', className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"names":["NODES","Primitive","primitive","node","Slot","createSlot","Node","React","props","forwardedRef","asChild","primitiveProps","Comp","jsx","NAME","DEFAULT_ORIENTATION","ORIENTATIONS","Separator","decorative","orientationProp","domProps","orientation","isValidOrientation","semanticProps","Root","className","ref","SeparatorPrimitive.Root","cn","Sheet","SheetPrimitive.Root","SheetTrigger","SheetPrimitive.Trigger","SheetClose","SheetPrimitive.Close","SheetPortal","SheetPrimitive.Portal","SheetOverlay","SheetPrimitive.Overlay","sheetVariants","cva","SheetContent","side","children","t","useLocale","jsxs","SheetPrimitive.Content","X","SheetHeader","SheetFooter","SheetTitle","SheetPrimitive.Title","SheetDescription","SheetPrimitive.Description"],"mappings":"4iBAKA,IAAIA,EAAQ,CACV,IACA,SACA,MACA,OACA,KACA,KACA,MACA,QACA,QACA,KACA,MACA,KACA,IACA,SACA,OACA,MACA,IACF,EACIC,EAAYD,EAAM,OAAO,CAACE,EAAWC,IAAS,CAChD,MAAMC,EAAOC,EAAAA,WAAW,aAAaF,CAAI,EAAE,EACrCG,EAAOC,EAAM,WAAW,CAACC,EAAOC,IAAiB,CACrD,KAAM,CAAE,QAAAC,EAAS,GAAGC,CAAc,EAAKH,EACjCI,EAAOF,EAAUN,EAAOD,EAC9B,OAAI,OAAO,OAAW,MACpB,OAAO,OAAO,IAAI,UAAU,CAAC,EAAI,IAEZU,EAAAA,IAAID,EAAM,CAAE,GAAGD,EAAgB,IAAKF,EAAc,CAC3E,CAAC,EACD,OAAAH,EAAK,YAAc,aAAaH,CAAI,GAC7B,CAAE,GAAGD,EAAW,CAACC,CAAI,EAAGG,CAAI,CACrC,EAAG,EAAE,EChCDQ,EAAO,YACPC,EAAsB,aACtBC,EAAe,CAAC,aAAc,UAAU,EACxCC,EAAYV,EAAM,WAAW,CAACC,EAAOC,IAAiB,CACxD,KAAM,CAAE,WAAAS,EAAY,YAAaC,EAAkBJ,EAAqB,GAAGK,CAAQ,EAAKZ,EAClFa,EAAcC,EAAmBH,CAAe,EAAIA,EAAkBJ,EAEtEQ,EAAgBL,EAAa,CAAE,KAAM,QAAW,CAAE,mBADhCG,IAAgB,WAAaA,EAAc,OAC0B,KAAM,WAAW,EAC9G,OAAuBR,EAAAA,IACrBZ,EAAU,IACV,CACE,mBAAoBoB,EACpB,GAAGE,EACH,GAAGH,EACH,IAAKX,CACX,CACA,CACA,CAAC,EACDQ,EAAU,YAAcH,EACxB,SAASQ,EAAmBD,EAAa,CACvC,OAAOL,EAAa,SAASK,CAAW,CAC1C,CACA,IAAIG,EAAOP,ECtBX,MAAMA,EAAYV,EAAM,WAGtB,CAAC,CAAE,UAAAkB,EAAW,YAAAJ,EAAc,aAAc,WAAAH,EAAa,GAAM,GAAGV,CAAA,EAASkB,IACzEb,EAAAA,IAACc,EAAA,CACC,IAAAD,EACA,WAAAR,EACA,YAAAG,EACA,UAAWO,EAAAA,GACT,qBACAP,IAAgB,aAAe,iBAAmB,iBAClDI,CAAA,EAED,GAAGjB,CAAA,CACN,CACD,EACDS,EAAU,YAAcU,EAAwB,YCbhD,MAAME,EAAQC,EAAAA,KAERC,EAAeC,EAAAA,QAEfC,EAAaC,EAAAA,MAEbC,EAAcC,EAAAA,OAEdC,EAAe9B,EAAM,WAGzB,CAAC,CAAE,UAAAkB,EAAW,GAAGjB,CAAA,EAASkB,IAC1Bb,EAAAA,IAACyB,EAAAA,QAAA,CACC,UAAWV,EAAAA,GACT,yJACAH,CAAA,EAED,GAAGjB,EACJ,IAAAkB,CAAA,CACF,CACD,EACDW,EAAa,YAAcC,EAAAA,QAAuB,YAElD,MAAMC,EAAgBC,EAAAA,IACpB,mMACA,CACE,SAAU,CACR,KAAM,CACJ,IAAK,oGACL,OACE,6GACF,KAAM,gIACN,MACE,kIAAA,CACJ,EAEF,gBAAiB,CACf,KAAM,OAAA,CACR,CAEJ,EAMMC,EAAelC,EAAM,WAGzB,CAAC,CAAE,KAAAmC,EAAO,QAAS,UAAAjB,EAAW,SAAAkB,EAAU,GAAGnC,CAAA,EAASkB,IAAQ,CAC5D,KAAM,CAAE,EAAAkB,CAAA,EAAMC,YAAA,EACd,cACGV,EAAA,CACC,SAAA,CAAAtB,EAAAA,IAACwB,EAAA,EAAa,EACdS,EAAAA,KAACC,EAAAA,QAAA,CAAuB,IAAArB,EAAU,UAAWE,EAAAA,GAAGW,EAAc,CAAE,KAAAG,EAAM,EAAGjB,CAAS,EAAI,GAAGjB,EACtF,SAAA,CAAAmC,EACDG,EAAAA,KAACZ,EAAAA,MAAA,CAAqB,UAAU,2NAC9B,SAAA,CAAArB,EAAAA,IAACmC,EAAAA,EAAA,CAAE,UAAU,SAAA,CAAU,QACtB,OAAA,CAAK,UAAU,UAAW,SAAAJ,EAAE,cAAc,CAAA,CAAE,CAAA,CAAA,CAC/C,CAAA,CAAA,CACF,CAAA,EACF,CAEJ,CAAC,EACDH,EAAa,YAAcM,EAAAA,QAAuB,YAElD,MAAME,EAAc,CAAC,CAAE,UAAAxB,EAAW,GAAGjB,CAAA,IACnCK,EAAAA,IAAC,MAAA,CAAI,UAAWe,EAAAA,GAAG,mDAAoDH,CAAS,EAAI,GAAGjB,CAAA,CAAO,EAEhGyC,EAAY,YAAc,cAE1B,MAAMC,EAAc,CAAC,CAAE,UAAAzB,EAAW,GAAGjB,KACnCK,EAAAA,IAAC,MAAA,CACC,UAAWe,EAAAA,GAAG,gEAAiEH,CAAS,EACvF,GAAGjB,CAAA,CACN,EAEF0C,EAAY,YAAc,cAE1B,MAAMC,EAAa5C,EAAM,WAGvB,CAAC,CAAE,UAAAkB,EAAW,GAAGjB,CAAA,EAASkB,IAC1Bb,EAAAA,IAACuC,EAAAA,MAAA,CACC,IAAA1B,EACA,UAAWE,EAAAA,GAAG,wCAAyCH,CAAS,EAC/D,GAAGjB,CAAA,CACN,CACD,EACD2C,EAAW,YAAcC,EAAAA,MAAqB,YAE9C,MAAMC,EAAmB9C,EAAM,WAG7B,CAAC,CAAE,UAAAkB,EAAW,GAAGjB,CAAA,EAASkB,IAC1Bb,EAAAA,IAACyC,EAAAA,YAAA,CACC,IAAA5B,EACA,UAAWE,EAAAA,GAAG,gCAAiCH,CAAS,EACvD,GAAGjB,CAAA,CACN,CACD,EACD6C,EAAiB,YAAcC,EAAAA,YAA2B","x_google_ignoreList":[0,1]}
@@ -0,0 +1,147 @@
1
+ import { jsx as o, jsxs as c } from "react/jsx-runtime";
2
+ import * as n from "react";
3
+ import "react-dom";
4
+ import { a as S, c as w } from "./button-BP_ug5gP.js";
5
+ import { c as l } from "./index-BGUveO6l.js";
6
+ import { R, P as O, T as P, j as f, O as u, C as h, k as v, l as N } from "./dialog-BFBDL8_i.js";
7
+ import { u as T } from "./locale-provider-BHGNO4j7.js";
8
+ import { X as C } from "./x-BBkgEhUv.js";
9
+ var z = [
10
+ "a",
11
+ "button",
12
+ "div",
13
+ "form",
14
+ "h2",
15
+ "h3",
16
+ "img",
17
+ "input",
18
+ "label",
19
+ "li",
20
+ "nav",
21
+ "ol",
22
+ "p",
23
+ "select",
24
+ "span",
25
+ "svg",
26
+ "ul"
27
+ ], j = z.reduce((e, t) => {
28
+ const a = S(`Primitive.${t}`), s = n.forwardRef((r, i) => {
29
+ const { asChild: m, ...d } = r, x = m ? a : t;
30
+ return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ o(x, { ...d, ref: i });
31
+ });
32
+ return s.displayName = `Primitive.${t}`, { ...e, [t]: s };
33
+ }, {}), E = "Separator", p = "horizontal", k = ["horizontal", "vertical"], g = n.forwardRef((e, t) => {
34
+ const { decorative: a, orientation: s = p, ...r } = e, i = A(s) ? s : p, d = a ? { role: "none" } : { "aria-orientation": i === "vertical" ? i : void 0, role: "separator" };
35
+ return /* @__PURE__ */ o(
36
+ j.div,
37
+ {
38
+ "data-orientation": i,
39
+ ...d,
40
+ ...r,
41
+ ref: t
42
+ }
43
+ );
44
+ });
45
+ g.displayName = E;
46
+ function A(e) {
47
+ return k.includes(e);
48
+ }
49
+ var y = g;
50
+ const D = n.forwardRef(({ className: e, orientation: t = "horizontal", decorative: a = !0, ...s }, r) => /* @__PURE__ */ o(
51
+ y,
52
+ {
53
+ ref: r,
54
+ decorative: a,
55
+ orientation: t,
56
+ className: l(
57
+ "shrink-0 bg-border",
58
+ t === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
59
+ e
60
+ ),
61
+ ...s
62
+ }
63
+ ));
64
+ D.displayName = y.displayName;
65
+ const K = R, Q = P, W = f, I = O, b = n.forwardRef(({ className: e, ...t }, a) => /* @__PURE__ */ o(
66
+ u,
67
+ {
68
+ className: l(
69
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
70
+ e
71
+ ),
72
+ ...t,
73
+ ref: a
74
+ }
75
+ ));
76
+ b.displayName = u.displayName;
77
+ const $ = w(
78
+ "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
79
+ {
80
+ variants: {
81
+ side: {
82
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
83
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
84
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
85
+ right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
86
+ }
87
+ },
88
+ defaultVariants: {
89
+ side: "right"
90
+ }
91
+ }
92
+ ), F = n.forwardRef(({ side: e = "right", className: t, children: a, ...s }, r) => {
93
+ const { t: i } = T();
94
+ return /* @__PURE__ */ c(I, { children: [
95
+ /* @__PURE__ */ o(b, {}),
96
+ /* @__PURE__ */ c(h, { ref: r, className: l($({ side: e }), t), ...s, children: [
97
+ a,
98
+ /* @__PURE__ */ c(f, { className: "absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring/50 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
99
+ /* @__PURE__ */ o(C, { className: "h-4 w-4" }),
100
+ /* @__PURE__ */ o("span", { className: "sr-only", children: i("common.close") })
101
+ ] })
102
+ ] })
103
+ ] });
104
+ });
105
+ F.displayName = h.displayName;
106
+ const V = ({ className: e, ...t }) => /* @__PURE__ */ o("div", { className: l("flex flex-col space-y-2 text-center sm:text-left", e), ...t });
107
+ V.displayName = "SheetHeader";
108
+ const H = ({ className: e, ...t }) => /* @__PURE__ */ o(
109
+ "div",
110
+ {
111
+ className: l("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", e),
112
+ ...t
113
+ }
114
+ );
115
+ H.displayName = "SheetFooter";
116
+ const L = n.forwardRef(({ className: e, ...t }, a) => /* @__PURE__ */ o(
117
+ v,
118
+ {
119
+ ref: a,
120
+ className: l("text-lg font-semibold text-foreground", e),
121
+ ...t
122
+ }
123
+ ));
124
+ L.displayName = v.displayName;
125
+ const M = n.forwardRef(({ className: e, ...t }, a) => /* @__PURE__ */ o(
126
+ N,
127
+ {
128
+ ref: a,
129
+ className: l("text-sm text-muted-foreground", e),
130
+ ...t
131
+ }
132
+ ));
133
+ M.displayName = N.displayName;
134
+ export {
135
+ D as S,
136
+ K as a,
137
+ I as b,
138
+ b as c,
139
+ Q as d,
140
+ W as e,
141
+ F as f,
142
+ V as g,
143
+ H as h,
144
+ L as i,
145
+ M as j
146
+ };
147
+ //# sourceMappingURL=sheet-Cyq_eDFW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet-Cyq_eDFW.js","sources":["../node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-separator/dist/index.mjs","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx"],"sourcesContent":["// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/separator.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Separator\";\nvar DEFAULT_ORIENTATION = \"horizontal\";\nvar ORIENTATIONS = [\"horizontal\", \"vertical\"];\nvar Separator = React.forwardRef((props, forwardedRef) => {\n const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;\n const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;\n const ariaOrientation = orientation === \"vertical\" ? orientation : void 0;\n const semanticProps = decorative ? { role: \"none\" } : { \"aria-orientation\": ariaOrientation, role: \"separator\" };\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-orientation\": orientation,\n ...semanticProps,\n ...domProps,\n ref: forwardedRef\n }\n );\n});\nSeparator.displayName = NAME;\nfunction isValidOrientation(orientation) {\n return ORIENTATIONS.includes(orientation);\n}\nvar Root = Separator;\nexport {\n Root,\n Separator\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react'\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\nimport { cn } from '@/utils/cn'\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className\n )}\n {...props}\n />\n))\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","import * as React from 'react'\nimport * as SheetPrimitive from '@radix-ui/react-dialog'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { X } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { useLocale } from '@/providers/locale-provider'\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n 'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = 'right', className, children, ...props }, ref) => {\n const { t } = useLocale()\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content ref={ref} className={cn(sheetVariants({ side }), className)} {...props}>\n {children}\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring/50 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">{t('common.close')}</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n})\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />\n)\nSheetHeader.displayName = 'SheetHeader'\n\nconst SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n {...props}\n />\n)\nSheetFooter.displayName = 'SheetFooter'\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold text-foreground', className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"names":["NODES","Primitive","primitive","node","Slot","createSlot","Node","React","props","forwardedRef","asChild","primitiveProps","Comp","jsx","NAME","DEFAULT_ORIENTATION","ORIENTATIONS","Separator","decorative","orientationProp","domProps","orientation","isValidOrientation","semanticProps","Root","className","ref","SeparatorPrimitive.Root","cn","Sheet","SheetPrimitive.Root","SheetTrigger","SheetPrimitive.Trigger","SheetClose","SheetPrimitive.Close","SheetPortal","SheetPrimitive.Portal","SheetOverlay","SheetPrimitive.Overlay","sheetVariants","cva","SheetContent","side","children","t","useLocale","jsxs","SheetPrimitive.Content","X","SheetHeader","SheetFooter","SheetTitle","SheetPrimitive.Title","SheetDescription","SheetPrimitive.Description"],"mappings":"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","x_google_ignoreList":[0,1]}