@flamingo-stack/openframe-frontend-core 0.0.702 → 0.0.703-snapshot.20261006080901

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 (341) hide show
  1. package/dist/{chunk-CYYTD5ZK.cjs → chunk-262YQFOS.cjs} +47 -47
  2. package/dist/{chunk-SAA7B3DA.js → chunk-2G546OND.js} +500 -67
  3. package/dist/{chunk-6JPQDYYY.js → chunk-2JDVL7UV.js} +2614 -2001
  4. package/dist/{chunk-ASN65P3F.cjs → chunk-4DQMTBMK.cjs} +15 -15
  5. package/dist/{chunk-CZ34HXDW.js → chunk-4KGXLVCF.js} +686 -725
  6. package/dist/{chunk-TCZCMD5Q.js → chunk-5HBHO5TB.js} +1 -1
  7. package/dist/{chunk-446KS5BG.js → chunk-5QJDM6UV.js} +5 -5
  8. package/dist/{chunk-UJJWTJ6S.js → chunk-6WQIUQUC.js} +30 -16
  9. package/dist/{chunk-YR6JPJF4.js → chunk-6XIF2Z7I.js} +4 -4
  10. package/dist/{chunk-YGRHITPY.cjs → chunk-7JIL3WOH.cjs} +24 -24
  11. package/dist/{chunk-RS7HWAYX.js → chunk-7LFIKJX2.js} +3 -3
  12. package/dist/{chunk-4OGAXAEG.cjs → chunk-ABU3TGXA.cjs} +3 -3
  13. package/dist/{chunk-3WSFIV5G.cjs → chunk-AMYY3PNL.cjs} +69 -55
  14. package/dist/{chunk-BRXOGCH3.cjs → chunk-BIZNSF3U.cjs} +3 -3
  15. package/dist/{chunk-2A4XES7R.cjs → chunk-BM5MVGH3.cjs} +3 -3
  16. package/dist/{chunk-IIMICN7L.cjs → chunk-C3BWIU7R.cjs} +4 -44
  17. package/dist/{chunk-LZNJH23A.cjs → chunk-C7XGRLT5.cjs} +12 -12
  18. package/dist/{chunk-6YCXA7CN.js → chunk-CH5232HV.js} +20 -19
  19. package/dist/{chunk-UIBSSVON.cjs → chunk-D7BTSVMS.cjs} +2 -2
  20. package/dist/{chunk-BO5ZHDA4.js → chunk-ERCV6HHJ.js} +7 -7
  21. package/dist/{chunk-5V6O73EH.js → chunk-FLKJYMVB.js} +3 -3
  22. package/dist/{chunk-Z5HDCZAS.js → chunk-FXENTYE5.js} +15 -15
  23. package/dist/{chunk-HIXGAY2L.cjs → chunk-HFJW24JJ.cjs} +121 -121
  24. package/dist/{chunk-HPJ4XS2L.js → chunk-HJAYVKWQ.js} +24 -24
  25. package/dist/{chunk-PLK6GHN7.js → chunk-I7DFUQMN.js} +10 -10
  26. package/dist/{chunk-KJ5LWATV.js → chunk-IHU5ANUY.js} +7 -7
  27. package/dist/{chunk-AEQANLBW.cjs → chunk-IZGDG5X6.cjs} +505 -72
  28. package/dist/{chunk-2V4Z44G6.js → chunk-JEYRXT5L.js} +17 -17
  29. package/dist/{chunk-B3LZJ6J3.cjs → chunk-L3IC42IF.cjs} +32 -32
  30. package/dist/{chunk-RTGPIHVO.cjs → chunk-LDPEQGKT.cjs} +2243 -1630
  31. package/dist/{chunk-FD4DBTFO.cjs → chunk-LTSTC3N5.cjs} +1253 -1292
  32. package/dist/{chunk-OGLCD3UL.js → chunk-MFFCUVWG.js} +6 -6
  33. package/dist/{chunk-3L7KCOGO.cjs → chunk-MGGGBHYD.cjs} +30 -30
  34. package/dist/{chunk-QFW3RUZS.cjs → chunk-MI3JUJ75.cjs} +33 -33
  35. package/dist/{chunk-EMCQGFXD.cjs → chunk-MMOODW57.cjs} +28 -27
  36. package/dist/{chunk-Q76ZTHNV.js → chunk-MP2C3LJ4.js} +1 -1
  37. package/dist/{chunk-E3DH543A.cjs → chunk-N3TO7JV3.cjs} +98 -98
  38. package/dist/{chunk-2T6QWNXU.js → chunk-NDESEPW5.js} +99 -11
  39. package/dist/{chunk-ETFFEA3J.js → chunk-NRLJUBCS.js} +7 -7
  40. package/dist/{chunk-HUOLB7ZN.cjs → chunk-OHFS7VOU.cjs} +9 -9
  41. package/dist/{chunk-MWUBBBWZ.js → chunk-QVSFBSWV.js} +10 -10
  42. package/dist/{chunk-MDBHZBW7.cjs → chunk-RKV5B7EU.cjs} +92 -4
  43. package/dist/{chunk-3G76LRGL.cjs → chunk-SYXQLETR.cjs} +29 -29
  44. package/dist/{chunk-FHM7GD5B.cjs → chunk-UK62YTH6.cjs} +28 -14
  45. package/dist/{chunk-HUMWQMCU.js → chunk-UT4YHQZW.js} +3 -3
  46. package/dist/{chunk-NGJCWEYX.cjs → chunk-VHCACDKP.cjs} +46 -46
  47. package/dist/{chunk-5FFNNJM7.js → chunk-VR2ZLFCP.js} +1 -1
  48. package/dist/{chunk-IZKOQVXO.js → chunk-VTASHWER.js} +14 -14
  49. package/dist/{chunk-64O4L7WN.js → chunk-WUJNYGO2.js} +11 -51
  50. package/dist/{chunk-JOY6HVPV.js → chunk-XATTBO5X.js} +25 -11
  51. package/dist/{chunk-L7KZA7ZD.cjs → chunk-XIFOBQRQ.cjs} +6 -6
  52. package/dist/{chunk-CXDJUKC6.cjs → chunk-XJKZ4IKT.cjs} +4 -4
  53. package/dist/{chunk-XCIFHW4E.cjs → chunk-XOYH2YQE.cjs} +2 -2
  54. package/dist/{chunk-HYFLTFFB.js → chunk-ZQFZSFQI.js} +2 -2
  55. package/dist/components/case-studies/index.cjs +24 -24
  56. package/dist/components/case-studies/index.js +10 -10
  57. package/dist/components/chat/chat-archive-page.d.ts +3 -3
  58. package/dist/components/chat/chat-archive-page.d.ts.map +1 -1
  59. package/dist/components/chat/chat-nav-sidebar.d.ts +4 -0
  60. package/dist/components/chat/chat-nav-sidebar.d.ts.map +1 -1
  61. package/dist/components/chat/chat-panel-header.d.ts +3 -2
  62. package/dist/components/chat/chat-panel-header.d.ts.map +1 -1
  63. package/dist/components/chat/embeddable-chat.d.ts +36 -2
  64. package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
  65. package/dist/components/chat/index.cjs +14 -6
  66. package/dist/components/chat/index.d.ts +4 -1
  67. package/dist/components/chat/index.d.ts.map +1 -1
  68. package/dist/components/chat/index.js +13 -5
  69. package/dist/components/chat/mingo-archive-list.d.ts +17 -0
  70. package/dist/components/chat/mingo-archive-list.d.ts.map +1 -0
  71. package/dist/components/chat/mingo-chat-header.d.ts +31 -0
  72. package/dist/components/chat/mingo-chat-header.d.ts.map +1 -0
  73. package/dist/components/chat/mingo-chat-rail.d.ts +54 -0
  74. package/dist/components/chat/mingo-chat-rail.d.ts.map +1 -0
  75. package/dist/components/chat/model-display.d.ts.map +1 -1
  76. package/dist/components/contact/contact-form.d.ts.map +1 -1
  77. package/dist/components/contact/index.cjs +11 -11
  78. package/dist/components/contact/index.js +10 -10
  79. package/dist/components/content-loading-container.d.ts +1 -1
  80. package/dist/components/content-loading-container.d.ts.map +1 -1
  81. package/dist/components/docs/index.cjs +14 -14
  82. package/dist/components/docs/index.js +13 -13
  83. package/dist/components/docs/skeletons.d.ts.map +1 -1
  84. package/dist/components/embeds/index.cjs +11 -11
  85. package/dist/components/embeds/index.js +10 -10
  86. package/dist/components/faq/index.cjs +12 -12
  87. package/dist/components/faq/index.js +11 -11
  88. package/dist/components/features/figma-prototype-viewer.d.ts.map +1 -1
  89. package/dist/components/features/index.cjs +10 -10
  90. package/dist/components/features/index.js +9 -9
  91. package/dist/components/features/media-gallery-manager.d.ts.map +1 -1
  92. package/dist/components/features/parallax-image-showcase.d.ts.map +1 -1
  93. package/dist/components/features/policy-configuration-panel.d.ts.map +1 -1
  94. package/dist/components/features/section-selector.d.ts.map +1 -1
  95. package/dist/components/help-center-pages/index.cjs +119 -119
  96. package/dist/components/help-center-pages/index.js +39 -39
  97. package/dist/components/help-center-pages/trust-center-sections.d.ts +2 -2
  98. package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
  99. package/dist/components/index.cjs +94 -86
  100. package/dist/components/index.js +32 -24
  101. package/dist/components/layout/article-detail-layout.d.ts +1 -1
  102. package/dist/components/layout/article-detail-layout.d.ts.map +1 -1
  103. package/dist/components/layout/page-container.d.ts.map +1 -1
  104. package/dist/components/layout/title-block.d.ts +2 -2
  105. package/dist/components/layout/title-block.d.ts.map +1 -1
  106. package/dist/components/loading/page-layout-skeleton.d.ts.map +1 -1
  107. package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
  108. package/dist/components/meeting-scheduler/booking-form.d.ts +4 -4
  109. package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
  110. package/dist/components/meeting-scheduler/context-panel.d.ts.map +1 -1
  111. package/dist/components/meeting-scheduler/index.cjs +127 -127
  112. package/dist/components/meeting-scheduler/index.d.ts +2 -2
  113. package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
  114. package/dist/components/meeting-scheduler/index.js +50 -50
  115. package/dist/components/navigation/app-header.d.ts +4 -0
  116. package/dist/components/navigation/app-header.d.ts.map +1 -1
  117. package/dist/components/navigation/app-layout-drawer.d.ts.map +1 -1
  118. package/dist/components/navigation/app-layout-side-panel.d.ts +142 -0
  119. package/dist/components/navigation/app-layout-side-panel.d.ts.map +1 -0
  120. package/dist/components/navigation/app-layout.d.ts +11 -1
  121. package/dist/components/navigation/app-layout.d.ts.map +1 -1
  122. package/dist/components/navigation/header-mingo-button.d.ts +4 -1
  123. package/dist/components/navigation/header-mingo-button.d.ts.map +1 -1
  124. package/dist/components/navigation/index.cjs +13 -13
  125. package/dist/components/navigation/index.d.ts +1 -0
  126. package/dist/components/navigation/index.d.ts.map +1 -1
  127. package/dist/components/navigation/index.js +12 -12
  128. package/dist/components/navigation/navigation-sidebar.d.ts +8 -1
  129. package/dist/components/navigation/navigation-sidebar.d.ts.map +1 -1
  130. package/dist/components/navigation/sliding-sidebar.d.ts.map +1 -1
  131. package/dist/components/onboarding-guides/index.cjs +14 -14
  132. package/dist/components/onboarding-guides/index.js +13 -13
  133. package/dist/components/persistent-filter-controls.d.ts.map +1 -1
  134. package/dist/components/related-content/index.cjs +7 -7
  135. package/dist/components/related-content/index.js +6 -6
  136. package/dist/components/shared/detail-page-skeleton.d.ts.map +1 -1
  137. package/dist/components/tickets/help-center-create-form.d.ts +4 -4
  138. package/dist/components/tickets/index.cjs +15 -15
  139. package/dist/components/tickets/index.js +14 -14
  140. package/dist/components/ui/announcement-bar-view.d.ts.map +1 -1
  141. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  142. package/dist/components/ui/checkbox-block.d.ts.map +1 -1
  143. package/dist/components/ui/dashboard-info-card.d.ts +1 -1
  144. package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
  145. package/dist/components/ui/data-table/data-table-body.d.ts +2 -2
  146. package/dist/components/ui/data-table/data-table-skeleton.d.ts +2 -2
  147. package/dist/components/ui/data-table/data-table-skeleton.d.ts.map +1 -1
  148. package/dist/components/ui/data-table/utils.d.ts +2 -2
  149. package/dist/components/ui/dialog.d.ts.map +1 -1
  150. package/dist/components/ui/drawer.d.ts +7 -3
  151. package/dist/components/ui/drawer.d.ts.map +1 -1
  152. package/dist/components/ui/entity-image.d.ts +2 -2
  153. package/dist/components/ui/file-manager/index.cjs +36 -36
  154. package/dist/components/ui/file-manager/index.js +3 -3
  155. package/dist/components/ui/filter-modal.d.ts.map +1 -1
  156. package/dist/components/ui/index.cjs +18 -10
  157. package/dist/components/ui/index.js +17 -9
  158. package/dist/components/ui/info-card-row.d.ts.map +1 -1
  159. package/dist/components/ui/menubar.d.ts +1 -1
  160. package/dist/components/ui/menubar.d.ts.map +1 -1
  161. package/dist/components/ui/modal-v2.d.ts.map +1 -1
  162. package/dist/components/ui/modal.d.ts.map +1 -1
  163. package/dist/components/ui/no-data/no-data-actions.d.ts.map +1 -1
  164. package/dist/components/ui/no-data/no-data-styles.d.ts +1 -1
  165. package/dist/components/ui/no-data/no-data-styles.d.ts.map +1 -1
  166. package/dist/components/ui/page-actions.d.ts.map +1 -1
  167. package/dist/components/ui/panel-resize-handle.d.ts +25 -0
  168. package/dist/components/ui/panel-resize-handle.d.ts.map +1 -0
  169. package/dist/components/ui/sheet.d.ts.map +1 -1
  170. package/dist/components/ui/table/table-skeleton.d.ts +1 -1
  171. package/dist/components/ui/table/table-skeleton.d.ts.map +1 -1
  172. package/dist/hooks/index.cjs +23 -9
  173. package/dist/hooks/index.js +24 -10
  174. package/dist/hooks/ui/index.d.ts +1 -0
  175. package/dist/hooks/ui/index.d.ts.map +1 -1
  176. package/dist/hooks/ui/use-content-breakpoint.d.ts +32 -0
  177. package/dist/hooks/ui/use-content-breakpoint.d.ts.map +1 -0
  178. package/dist/hooks/ui/use-isomorphic-layout-effect.d.ts +2 -2
  179. package/dist/hooks/ui/use-isomorphic-layout-effect.d.ts.map +1 -1
  180. package/dist/hooks/ui/use-media-query.d.ts.map +1 -1
  181. package/dist/hooks/ui/use-resizable-panel-size.d.ts +46 -0
  182. package/dist/hooks/ui/use-resizable-panel-size.d.ts.map +1 -0
  183. package/dist/index.cjs +39 -17
  184. package/dist/index.js +41 -19
  185. package/dist/styles/layout-steps.d.ts +30 -0
  186. package/dist/styles/layout-steps.d.ts.map +1 -0
  187. package/dist/tailwind.config.cjs +36 -11
  188. package/dist/tailwind.config.js +36 -11
  189. package/eslint-config/README.md +9 -0
  190. package/eslint-config/base.js +17 -1
  191. package/eslint-config/layout-variants.js +57 -0
  192. package/package.json +3 -1
  193. package/src/ODS_TOKEN_RULES.md +40 -0
  194. package/src/components/chat/chat-archive-page.tsx +9 -7
  195. package/src/components/chat/chat-nav-sidebar.tsx +10 -4
  196. package/src/components/chat/chat-panel-header.tsx +8 -5
  197. package/src/components/chat/embeddable-chat.tsx +686 -494
  198. package/src/components/chat/index.ts +4 -0
  199. package/src/components/chat/mingo-archive-list.tsx +108 -0
  200. package/src/components/chat/mingo-chat-header.tsx +104 -0
  201. package/src/components/chat/mingo-chat-rail.tsx +361 -0
  202. package/src/components/chat/model-display.tsx +8 -1
  203. package/src/components/contact/contact-form.tsx +11 -9
  204. package/src/components/content-loading-container.tsx +4 -2
  205. package/src/components/docs/doc-viewer.tsx +7 -7
  206. package/src/components/docs/skeletons.tsx +7 -4
  207. package/src/components/dynamic-skeleton.tsx +1 -1
  208. package/src/components/embeds/claude-embed.tsx +1 -1
  209. package/src/components/embeds/embed-viewer-frame.tsx +4 -4
  210. package/src/components/embeds/figma-embed.tsx +2 -2
  211. package/src/components/embeds/google-sheets-viewer.tsx +1 -1
  212. package/src/components/embeds/pdf-viewer.tsx +3 -3
  213. package/src/components/empty-state.tsx +6 -6
  214. package/src/components/faq/faq-section.tsx +2 -2
  215. package/src/components/faq-accordion.tsx +1 -1
  216. package/src/components/features/board/board-column-header.tsx +1 -1
  217. package/src/components/features/command-box.tsx +3 -3
  218. package/src/components/features/entity-video-section.tsx +2 -2
  219. package/src/components/features/figma-prototype-viewer.tsx +4 -1
  220. package/src/components/features/media-gallery-manager.tsx +3 -1
  221. package/src/components/features/parallax-image-showcase.tsx +9 -6
  222. package/src/components/features/policy-configuration-panel.tsx +9 -7
  223. package/src/components/features/provider-button.tsx +1 -1
  224. package/src/components/features/section-selector.tsx +11 -6
  225. package/src/components/features/select-button.tsx +4 -4
  226. package/src/components/features/seo-editor-preview.tsx +2 -2
  227. package/src/components/features/video-ratio-tabs.tsx +3 -3
  228. package/src/components/features/waitlist-form.tsx +1 -1
  229. package/src/components/help-center-pages/trust-center-page.tsx +1 -1
  230. package/src/components/help-center-pages/trust-center-sections.tsx +14 -14
  231. package/src/components/icon-display.tsx +1 -1
  232. package/src/components/layout/article-detail-layout.tsx +4 -2
  233. package/src/components/layout/list-page-layout.tsx +2 -2
  234. package/src/components/layout/page-container.tsx +26 -14
  235. package/src/components/layout/page-heading.tsx +1 -1
  236. package/src/components/layout/page-layout.tsx +1 -1
  237. package/src/components/layout/title-block.tsx +13 -13
  238. package/src/components/loading/card-skeleton.tsx +11 -11
  239. package/src/components/loading/category-vendor-selector-skeleton.tsx +1 -1
  240. package/src/components/loading/content-skeleton.tsx +6 -6
  241. package/src/components/loading/device-card-skeleton.tsx +1 -1
  242. package/src/components/loading/margin-report-skeleton.tsx +7 -7
  243. package/src/components/loading/msp-profile-form-skeleton.tsx +3 -3
  244. package/src/components/loading/organization-card-skeleton.tsx +2 -2
  245. package/src/components/loading/page-layout-skeleton.tsx +80 -68
  246. package/src/components/loading/unified-skeleton.tsx +16 -6
  247. package/src/components/media-carousel.tsx +3 -3
  248. package/src/components/meeting-scheduler/booking-form.tsx +9 -8
  249. package/src/components/meeting-scheduler/context-panel.tsx +8 -6
  250. package/src/components/meeting-scheduler/directory.tsx +4 -4
  251. package/src/components/meeting-scheduler/index.tsx +15 -15
  252. package/src/components/meeting-scheduler/slot-picker.tsx +12 -12
  253. package/src/components/navigation/app-header.tsx +6 -0
  254. package/src/components/navigation/app-layout-drawer.tsx +14 -237
  255. package/src/components/navigation/app-layout-side-panel.tsx +594 -0
  256. package/src/components/navigation/app-layout.tsx +69 -4
  257. package/src/components/navigation/header-mingo-button.tsx +13 -3
  258. package/src/components/navigation/index.ts +5 -0
  259. package/src/components/navigation/navigation-sidebar.tsx +17 -3
  260. package/src/components/navigation/sliding-sidebar.tsx +2 -1
  261. package/src/components/pagination.tsx +3 -3
  262. package/src/components/persistent-filter-controls.tsx +6 -2
  263. package/src/components/platform/ScriptArguments.tsx +1 -1
  264. package/src/components/platform/ScriptInfoSection.tsx +4 -4
  265. package/src/components/shared/article-author-byline.tsx +1 -1
  266. package/src/components/shared/delivery/delivery-lists.tsx +2 -2
  267. package/src/components/shared/delivery/delivery-row.tsx +7 -7
  268. package/src/components/shared/delivery/delivery-table.tsx +3 -3
  269. package/src/components/shared/detail-page-skeleton.tsx +11 -5
  270. package/src/components/shared/dev-section/dev-card-row.tsx +6 -6
  271. package/src/components/shared/dev-section/dev-section-view.tsx +1 -1
  272. package/src/components/shared/product-release/product-release-card-skeleton.tsx +8 -8
  273. package/src/components/shared/product-release/product-release-card.tsx +9 -9
  274. package/src/components/shared/product-release/product-releases-view.tsx +1 -1
  275. package/src/components/shared/product-release/release-detail-page.tsx +5 -5
  276. package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +1 -1
  277. package/src/components/shared/roadmap/roadmap-grid.tsx +3 -3
  278. package/src/components/tickets/help-center-card.tsx +1 -1
  279. package/src/components/tickets/help-center-create-form.tsx +12 -12
  280. package/src/components/ui/announcement-bar-view.tsx +2 -10
  281. package/src/components/ui/benefit-card.tsx +18 -18
  282. package/src/components/ui/brand-association-grid.tsx +4 -4
  283. package/src/components/ui/breadcrumb.tsx +4 -1
  284. package/src/components/ui/card.tsx +1 -1
  285. package/src/components/ui/checkbox-block.tsx +9 -7
  286. package/src/components/ui/content-loader.tsx +3 -3
  287. package/src/components/ui/cursor-pagination.tsx +3 -3
  288. package/src/components/ui/dashboard-info-card.tsx +13 -9
  289. package/src/components/ui/data-attribution.tsx +2 -2
  290. package/src/components/ui/data-table/data-table-body.tsx +2 -2
  291. package/src/components/ui/data-table/data-table-header.tsx +15 -15
  292. package/src/components/ui/data-table/data-table-skeleton.tsx +6 -6
  293. package/src/components/ui/data-table/utils.ts +5 -5
  294. package/src/components/ui/dialog.tsx +4 -1
  295. package/src/components/ui/drawer.tsx +43 -189
  296. package/src/components/ui/duration-input.tsx +1 -1
  297. package/src/components/ui/entity-image.tsx +3 -3
  298. package/src/components/ui/feature-card.tsx +10 -10
  299. package/src/components/ui/file-manager/file-manager-action-bar.tsx +1 -1
  300. package/src/components/ui/file-manager/file-manager.tsx +1 -1
  301. package/src/components/ui/filter-modal.tsx +8 -1
  302. package/src/components/ui/highlight-card.tsx +7 -7
  303. package/src/components/ui/info-card-row.tsx +10 -6
  304. package/src/components/ui/modal-v2.tsx +7 -2
  305. package/src/components/ui/modal.tsx +3 -2
  306. package/src/components/ui/no-data/no-data-actions.tsx +10 -4
  307. package/src/components/ui/no-data/no-data-styles.ts +1 -1
  308. package/src/components/ui/no-data/no-data.tsx +1 -1
  309. package/src/components/ui/organization-card.tsx +1 -1
  310. package/src/components/ui/page-actions.tsx +34 -5
  311. package/src/components/ui/panel-resize-handle.tsx +184 -0
  312. package/src/components/ui/progress-bar.tsx +2 -2
  313. package/src/components/ui/query-report-table/query-report-table.tsx +1 -1
  314. package/src/components/ui/search-input.tsx +2 -2
  315. package/src/components/ui/service-card.tsx +2 -2
  316. package/src/components/ui/sheet.tsx +2 -1
  317. package/src/components/ui/skeleton.tsx +3 -3
  318. package/src/components/ui/stacked-rows-panel.tsx +4 -4
  319. package/src/components/ui/tab-navigation.tsx +2 -2
  320. package/src/components/ui/tab-selector.tsx +2 -2
  321. package/src/components/ui/table/table-header.tsx +3 -3
  322. package/src/components/ui/table/table-skeleton.tsx +3 -3
  323. package/src/components/ui/table/utils.ts +5 -5
  324. package/src/components/ui/tag-search-input.tsx +3 -3
  325. package/src/components/ui/tags-manager.tsx +5 -5
  326. package/src/components/ui/test-run.tsx +2 -2
  327. package/src/components/ui/ticket-info-section.tsx +1 -1
  328. package/src/components/ui/ticket-notes-section.tsx +1 -1
  329. package/src/components/ui/ticket-status-config-row.tsx +15 -15
  330. package/src/hooks/ui/index.ts +1 -0
  331. package/src/hooks/ui/use-content-breakpoint.ts +58 -0
  332. package/src/hooks/ui/use-media-query.ts +3 -2
  333. package/src/hooks/ui/use-resizable-panel-size.ts +114 -0
  334. package/src/styles/index.css +2 -0
  335. package/src/styles/layout-steps.ts +14 -0
  336. package/src/styles/ods-colors.css +15 -0
  337. package/src/styles/ods-content-area-tokens.css +27 -0
  338. package/src/styles/ods-content-area.css +31 -0
  339. package/src/styles/ods-effects.css +4 -2
  340. package/src/styles/ods-responsive-tokens.css +14 -4
  341. package/tailwind.config.ts +42 -7
@@ -1,25 +1,25 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
2
 
3
3
 
4
- var _chunkCYYTD5ZKcjs = require('./chunk-CYYTD5ZK.cjs');
4
+ var _chunk262YQFOScjs = require('./chunk-262YQFOS.cjs');
5
5
 
6
6
 
7
7
 
8
8
 
9
9
 
10
10
 
11
- var _chunk3G76LRGLcjs = require('./chunk-3G76LRGL.cjs');
11
+ var _chunkSYXQLETRcjs = require('./chunk-SYXQLETR.cjs');
12
12
 
13
13
 
14
14
 
15
- var _chunkHUOLB7ZNcjs = require('./chunk-HUOLB7ZN.cjs');
15
+ var _chunkOHFS7VOUcjs = require('./chunk-OHFS7VOU.cjs');
16
16
 
17
17
 
18
18
 
19
19
 
20
20
 
21
21
 
22
- var _chunkL7KZA7ZDcjs = require('./chunk-L7KZA7ZD.cjs');
22
+ var _chunkXIFOBQRQcjs = require('./chunk-XIFOBQRQ.cjs');
23
23
 
24
24
 
25
25
 
@@ -35,16 +35,16 @@ var _chunkL7KZA7ZDcjs = require('./chunk-L7KZA7ZD.cjs');
35
35
 
36
36
 
37
37
 
38
- var _chunkFD4DBTFOcjs = require('./chunk-FD4DBTFO.cjs');
38
+ var _chunkLTSTC3N5cjs = require('./chunk-LTSTC3N5.cjs');
39
39
 
40
40
 
41
41
 
42
- var _chunk3L7KCOGOcjs = require('./chunk-3L7KCOGO.cjs');
42
+ var _chunkMGGGBHYDcjs = require('./chunk-MGGGBHYD.cjs');
43
43
 
44
44
 
45
45
 
46
46
 
47
- var _chunk4OGAXAEGcjs = require('./chunk-4OGAXAEG.cjs');
47
+ var _chunkABU3TGXAcjs = require('./chunk-ABU3TGXA.cjs');
48
48
 
49
49
 
50
50
 
@@ -55,11 +55,11 @@ var _chunk4OGAXAEGcjs = require('./chunk-4OGAXAEG.cjs');
55
55
 
56
56
 
57
57
 
58
- var _chunkRTGPIHVOcjs = require('./chunk-RTGPIHVO.cjs');
58
+ var _chunkLDPEQGKTcjs = require('./chunk-LDPEQGKT.cjs');
59
59
 
60
60
 
61
61
 
62
- var _chunkIIMICN7Lcjs = require('./chunk-IIMICN7L.cjs');
62
+ var _chunkC3BWIU7Rcjs = require('./chunk-C3BWIU7R.cjs');
63
63
 
64
64
 
65
65
 
@@ -71,10 +71,10 @@ var _chunk7DNL734Scjs = require('./chunk-7DNL734S.cjs');
71
71
 
72
72
 
73
73
 
74
- var _chunkEMCQGFXDcjs = require('./chunk-EMCQGFXD.cjs');
74
+ var _chunkMMOODW57cjs = require('./chunk-MMOODW57.cjs');
75
75
 
76
76
 
77
- var _chunkMDBHZBW7cjs = require('./chunk-MDBHZBW7.cjs');
77
+ var _chunkRKV5B7EUcjs = require('./chunk-RKV5B7EU.cjs');
78
78
 
79
79
 
80
80
  var _chunkUJ7AXHRZcjs = require('./chunk-UJ7AXHRZ.cjs');
@@ -83,7 +83,7 @@ var _chunkUJ7AXHRZcjs = require('./chunk-UJ7AXHRZ.cjs');
83
83
 
84
84
 
85
85
 
86
- var _chunk2A4XES7Rcjs = require('./chunk-2A4XES7R.cjs');
86
+ var _chunkBM5MVGH3cjs = require('./chunk-BM5MVGH3.cjs');
87
87
 
88
88
 
89
89
  var _chunkDFQYAYBHcjs = require('./chunk-DFQYAYBH.cjs');
@@ -114,7 +114,7 @@ var TicketActionFailure = class extends Error {
114
114
  function useTicketActions(options) {
115
115
  const queryClient = _reactquery.useQueryClient.call(void 0, );
116
116
  const ticketActionEndpoint = _nullishCoalesce(_chunkUJ7AXHRZcjs.useRequiredChatRuntime.call(void 0, ).endpoints.ticketActionUrl, () => ( TICKET_ACTION_ENDPOINT));
117
- const ticketLive = _chunkL7KZA7ZDcjs.useOptionalTicketLive.call(void 0, );
117
+ const ticketLive = _chunkXIFOBQRQcjs.useOptionalTicketLive.call(void 0, );
118
118
  const notifyTicketCreated = _optionalChain([ticketLive, 'optionalAccess', _2 => _2.notifyTicketCreated]);
119
119
  const { prependOptimistic, removeOptimistic, removeTicketFromCache, toast: toast2, onSupportSystemDown } = options;
120
120
  const formInFlightRef = _react.useRef.call(void 0, null);
@@ -159,7 +159,7 @@ function useTicketActions(options) {
159
159
  }, []);
160
160
  const executeTicketAction = _react.useCallback.call(void 0,
161
161
  async (toolName, args) => {
162
- const res = await _chunkMDBHZBW7cjs.embedAuthedFetch.call(void 0, ticketActionEndpoint, {
162
+ const res = await _chunkRKV5B7EUcjs.embedAuthedFetch.call(void 0, ticketActionEndpoint, {
163
163
  method: "POST",
164
164
  body: JSON.stringify({ tool_name: toolName, args })
165
165
  });
@@ -275,10 +275,10 @@ function useTicketActions(options) {
275
275
  ..._optionalChain([input, 'access', _3 => _3.attachments, 'optionalAccess', _4 => _4.length]) ? { attachments: input.attachments } : {}
276
276
  });
277
277
  if (result.mirror_synced === false) {
278
- toast2(_chunkL7KZA7ZDcjs.TOAST_COPY.open_mirror_pending);
278
+ toast2(_chunkXIFOBQRQcjs.TOAST_COPY.open_mirror_pending);
279
279
  watchMirrorSync(placeholderId, result.ticket_id);
280
280
  } else {
281
- toast2(_chunkL7KZA7ZDcjs.TOAST_COPY.open_success);
281
+ toast2(_chunkXIFOBQRQcjs.TOAST_COPY.open_success);
282
282
  await queryClient.invalidateQueries({ queryKey: ["tickets"] });
283
283
  removeOptimistic(placeholderId);
284
284
  }
@@ -364,7 +364,7 @@ function useTicketActions(options) {
364
364
  ...hasText ? { content_addendum: trimmed } : {},
365
365
  ...hasFiles ? { attachments } : {}
366
366
  },
367
- _chunkL7KZA7ZDcjs.TOAST_COPY.comment_success,
367
+ _chunkXIFOBQRQcjs.TOAST_COPY.comment_success,
368
368
  "send message"
369
369
  );
370
370
  if (ok) {
@@ -387,13 +387,13 @@ function useTicketActions(options) {
387
387
  status: "CLOSED",
388
388
  ..._optionalChain([resolution, 'optionalAccess', _6 => _6.trim, 'call', _7 => _7()]) ? { resolution: resolution.trim() } : {}
389
389
  },
390
- _chunkL7KZA7ZDcjs.TOAST_COPY.close_success,
390
+ _chunkXIFOBQRQcjs.TOAST_COPY.close_success,
391
391
  "close ticket"
392
392
  ),
393
393
  [updateTicket]
394
394
  );
395
395
  const reopenTicket = _react.useCallback.call(void 0,
396
- (ticket) => updateTicket(ticket, { status: "OPEN" }, _chunkL7KZA7ZDcjs.TOAST_COPY.reopen_success, "reopen ticket"),
396
+ (ticket) => updateTicket(ticket, { status: "OPEN" }, _chunkXIFOBQRQcjs.TOAST_COPY.reopen_success, "reopen ticket"),
397
397
  [updateTicket]
398
398
  );
399
399
  return _react.useMemo.call(void 0,
@@ -537,8 +537,8 @@ function useTicketsList(filters) {
537
537
  const search = (_nullishCoalesce(filters.search, () => ( ""))).trim();
538
538
  const status = (_nullishCoalesce(filters.status, () => ( ""))).trim().toLowerCase();
539
539
  const statusFilter = status && status !== "all" ? status : "";
540
- const page = _chunk4OGAXAEGcjs.positiveInt.call(void 0, filters.page, 1);
541
- const pageSize = _chunk4OGAXAEGcjs.positiveInt.call(void 0, filters.pageSize, DEFAULT_PAGE_SIZE, { max: _chunk4OGAXAEGcjs.PAGE_PARAM_LIMITS.maxPageSize });
540
+ const page = _chunkABU3TGXAcjs.positiveInt.call(void 0, filters.page, 1);
541
+ const pageSize = _chunkABU3TGXAcjs.positiveInt.call(void 0, filters.pageSize, DEFAULT_PAGE_SIZE, { max: _chunkABU3TGXAcjs.PAGE_PARAM_LIMITS.maxPageSize });
542
542
  const enabled = !!customerEmail;
543
543
  const identityKey = customerEmail || "anon";
544
544
  const query = _reactquery.useQuery.call(void 0, {
@@ -562,7 +562,7 @@ function useTicketsList(filters) {
562
562
  pageSize
563
563
  };
564
564
  if (statusFilter) body.status = statusFilter;
565
- const response = await _chunkMDBHZBW7cjs.embedAuthedFetch.call(void 0, findTicketEndpoint, {
565
+ const response = await _chunkRKV5B7EUcjs.embedAuthedFetch.call(void 0, findTicketEndpoint, {
566
566
  method: "POST",
567
567
  body: JSON.stringify(body)
568
568
  });
@@ -577,7 +577,7 @@ function useTicketsList(filters) {
577
577
  const totalCount = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([data, 'optionalAccess', _12 => _12.totalCount]), () => ( _optionalChain([data, 'optionalAccess', _13 => _13.count]))), () => ( _optionalChain([data, 'optionalAccess', _14 => _14.tickets, 'optionalAccess', _15 => _15.length]))), () => ( 0));
578
578
  const echoedPage = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _16 => _16.page]), () => ( page));
579
579
  const echoedPageSize = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _17 => _17.pageSize]), () => ( pageSize));
580
- const totalPages = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _18 => _18.totalPages]), () => ( _chunk4OGAXAEGcjs.pageCount.call(void 0, totalCount, echoedPageSize)));
580
+ const totalPages = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _18 => _18.totalPages]), () => ( _chunkABU3TGXAcjs.pageCount.call(void 0, totalCount, echoedPageSize)));
581
581
  return {
582
582
  tickets: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _19 => _19.tickets]), () => ( [])),
583
583
  // Loading-state-truth = `data === undefined`. TanStack v5's
@@ -608,14 +608,14 @@ function useTicketsList(filters) {
608
608
  // src/components/tickets/ticket-open-form.tsx
609
609
 
610
610
  var _jsxruntime = require('react/jsx-runtime');
611
- var COUNTER_VISIBLE_AT = Math.floor(_chunkL7KZA7ZDcjs.TICKET_TEXT_MAX_CHARS * 0.8);
611
+ var COUNTER_VISIBLE_AT = Math.floor(_chunkXIFOBQRQcjs.TICKET_TEXT_MAX_CHARS * 0.8);
612
612
  function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
613
613
  const [subject, setSubject] = _react.useState.call(void 0, "");
614
614
  const [content, setContent] = _react.useState.call(void 0, "");
615
- const { attachments, readyAttachments, hasInflightUploads, addFiles, removeAttachment, clear } = _chunkRTGPIHVOcjs.useChatAttachments.call(void 0, );
615
+ const { attachments, readyAttachments, hasInflightUploads, addFiles, removeAttachment, clear } = _chunkLDPEQGKTcjs.useChatAttachments.call(void 0, );
616
616
  const trimmedSubject = subject.trim();
617
617
  const trimmedContent = content.trim();
618
- const overCap = content.length > _chunkL7KZA7ZDcjs.TICKET_TEXT_MAX_CHARS;
618
+ const overCap = content.length > _chunkXIFOBQRQcjs.TICKET_TEXT_MAX_CHARS;
619
619
  const showCounter = content.length >= COUNTER_VISIBLE_AT;
620
620
  const canSubmit = !isSubmitting && !supportSystemDown && !hasInflightUploads && trimmedSubject.length > 0 && trimmedContent.length > 0 && !overCap;
621
621
  const handleSubmit = async (e) => {
@@ -632,7 +632,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
632
632
  clear();
633
633
  }
634
634
  };
635
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEMCQGFXDcjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: handleSubmit, className: "flex flex-col gap-6 md:flex-row", ..._chunkFD4DBTFOcjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS, children: [
635
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMMOODW57cjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: handleSubmit, className: "flex flex-col gap-6 md:flex-row", ..._chunkLTSTC3N5cjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS, children: [
636
636
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0 flex-1 md:max-w-md", children: [
637
637
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "mb-2 text-ods-text-primary text-h2", children: "Need Support?" }),
638
638
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: "Can't find what you're looking for? Submit a support ticket below \u2014 we'll follow up shortly." }),
@@ -642,7 +642,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
642
642
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
643
643
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "label", { htmlFor: "ticket-subject", className: "mb-1 block text-ods-text-primary text-h6", children: "Ticket Subject" }),
644
644
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
645
- _chunk2A4XES7Rcjs.Input,
645
+ _chunkBM5MVGH3cjs.Input,
646
646
  {
647
647
  id: "ticket-subject",
648
648
  type: "text",
@@ -657,7 +657,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
657
657
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
658
658
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "label", { htmlFor: "ticket-content", className: "mb-1 block text-ods-text-primary text-h6", children: "Your Message" }),
659
659
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
660
- _chunkFD4DBTFOcjs.Textarea,
660
+ _chunkLTSTC3N5cjs.Textarea,
661
661
  {
662
662
  id: "ticket-content",
663
663
  placeholder: "Describe your issue or question in detail...",
@@ -671,11 +671,11 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
671
671
  showCounter && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: `mt-1 text-right text-h6 ${overCap ? "text-ods-error" : "text-ods-text-secondary"}`, children: [
672
672
  content.length,
673
673
  "/",
674
- _chunkL7KZA7ZDcjs.TICKET_TEXT_MAX_CHARS
674
+ _chunkXIFOBQRQcjs.TICKET_TEXT_MAX_CHARS
675
675
  ] })
676
676
  ] }),
677
677
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
678
- _chunkRTGPIHVOcjs.ChatAttachmentChipStrip,
678
+ _chunkLDPEQGKTcjs.ChatAttachmentChipStrip,
679
679
  {
680
680
  attachments,
681
681
  onRemove: removeAttachment,
@@ -684,7 +684,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
684
684
  ),
685
685
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between gap-3", children: [
686
686
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
687
- _chunkRTGPIHVOcjs.ChatAttachmentAddButton,
687
+ _chunkLDPEQGKTcjs.ChatAttachmentAddButton,
688
688
  {
689
689
  attachmentsEnabled: !supportSystemDown,
690
690
  attachmentsCount: attachments.length,
@@ -714,7 +714,7 @@ var _usesticktobottom = require('use-stick-to-bottom');
714
714
 
715
715
  var LIST_ENGAGEMENTS_ENDPOINT = "/api/chat/agent/list-engagements";
716
716
  function useTicketEngagements(externalTicketId, enabled = true) {
717
- const identity = _chunkRTGPIHVOcjs.useChatIdentity.call(void 0, );
717
+ const identity = _chunkLDPEQGKTcjs.useChatIdentity.call(void 0, );
718
718
  const identityKey = _nullishCoalesce(_optionalChain([identity, 'access', _21 => _21.user, 'optionalAccess', _22 => _22.email]), () => ( "anon"));
719
719
  const listEngagementsEndpoint = _nullishCoalesce(_chunkUJ7AXHRZcjs.useRequiredChatRuntime.call(void 0, ).endpoints.listEngagementsUrl, () => ( LIST_ENGAGEMENTS_ENDPOINT));
720
720
  const fetchable = enabled && !!externalTicketId && !externalTicketId.startsWith("temp-");
@@ -734,7 +734,7 @@ function useTicketEngagements(externalTicketId, enabled = true) {
734
734
  // `['ticket-engagements', id]`; focus/mount refetch is the no-stream
735
735
  // fallback.
736
736
  queryFn: async () => {
737
- const response = await _chunkMDBHZBW7cjs.embedAuthedFetch.call(void 0, listEngagementsEndpoint, {
737
+ const response = await _chunkRKV5B7EUcjs.embedAuthedFetch.call(void 0, listEngagementsEndpoint, {
738
738
  method: "POST",
739
739
  body: JSON.stringify({ ticket_id: externalTicketId })
740
740
  });
@@ -787,7 +787,7 @@ function TicketLinkedDeliveryCard({ clickup, className }) {
787
787
  dateClosed: clickup.date_closed,
788
788
  clickupUrl: _nullishCoalesce(clickup.clickup_url, () => ( ""))
789
789
  };
790
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `${_chunkEMCQGFXDcjs.CONTENT_CARD_SKELETON_FRAME_CLASS} ${_nullishCoalesce(className, () => ( ""))}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3G76LRGLcjs.DeliveryRow, { item, href: clickup.delivery_href, caption: "Linked delivery" }) });
790
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `${_chunkMMOODW57cjs.CONTENT_CARD_SKELETON_FRAME_CLASS} ${_nullishCoalesce(className, () => ( ""))}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSYXQLETRcjs.DeliveryRow, { item, href: clickup.delivery_href, caption: "Linked delivery" }) });
791
791
  }
792
792
 
793
793
  // src/components/tickets/ticket-reply-composer.tsx
@@ -802,7 +802,7 @@ function TicketReplyComposer({
802
802
  }) {
803
803
  const [resolution, setResolution] = _react.useState.call(void 0, "");
804
804
  const [closeDialogOpen, setCloseDialogOpen] = _react.useState.call(void 0, false);
805
- const attachments = _chunkRTGPIHVOcjs.useChatAttachments.call(void 0, );
805
+ const attachments = _chunkLDPEQGKTcjs.useChatAttachments.call(void 0, );
806
806
  const { readyAttachments, clear: clearAttachments } = attachments;
807
807
  const ticketRef = { id: ticket.id, external_id: ticket.external_id };
808
808
  const hasReadyFiles = readyAttachments.length > 0;
@@ -823,7 +823,7 @@ function TicketReplyComposer({
823
823
  const disabled = busy || supportSystemDown;
824
824
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2", children: [
825
825
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
826
- _chunkRTGPIHVOcjs.ChatAttachmentChipStrip,
826
+ _chunkLDPEQGKTcjs.ChatAttachmentChipStrip,
827
827
  {
828
828
  attachments: attachments.attachments,
829
829
  onRemove: attachments.removeAttachment,
@@ -832,7 +832,7 @@ function TicketReplyComposer({
832
832
  }
833
833
  ),
834
834
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
835
- _chunkRTGPIHVOcjs.ChatInput,
835
+ _chunkLDPEQGKTcjs.ChatInput,
836
836
  {
837
837
  fullWidth: true,
838
838
  autoFocus: true,
@@ -840,13 +840,13 @@ function TicketReplyComposer({
840
840
  sending: busy || attachments.hasInflightUploads,
841
841
  disabled: supportSystemDown,
842
842
  allowEmptySend: hasReadyFiles,
843
- maxLength: _chunkL7KZA7ZDcjs.TICKET_TEXT_MAX_CHARS,
843
+ maxLength: _chunkXIFOBQRQcjs.TICKET_TEXT_MAX_CHARS,
844
844
  onSend: handleSend
845
845
  }
846
846
  ),
847
847
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full items-center gap-2", children: [
848
848
  !supportSystemDown && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
849
- _chunkRTGPIHVOcjs.ChatAttachmentAddButton,
849
+ _chunkLDPEQGKTcjs.ChatAttachmentAddButton,
850
850
  {
851
851
  attachmentsEnabled: true,
852
852
  attachmentsCount: attachments.attachments.length,
@@ -869,25 +869,25 @@ function TicketReplyComposer({
869
869
  }
870
870
  )
871
871
  ] }),
872
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFD4DBTFOcjs.AlertDialog, { open: closeDialogOpen, onOpenChange: setCloseDialogOpen, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkFD4DBTFOcjs.AlertDialogContent, { className: "border-ods-border bg-ods-card", children: [
873
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkFD4DBTFOcjs.AlertDialogHeader, { children: [
874
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFD4DBTFOcjs.AlertDialogTitle, { className: "text-ods-text-primary", children: "Close this ticket?" }),
875
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFD4DBTFOcjs.AlertDialogDescription, { className: "text-ods-text-secondary", children: "Add an optional resolution note below. You can reopen the ticket later if needed." })
872
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLTSTC3N5cjs.AlertDialog, { open: closeDialogOpen, onOpenChange: setCloseDialogOpen, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkLTSTC3N5cjs.AlertDialogContent, { className: "border-ods-border bg-ods-card", children: [
873
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkLTSTC3N5cjs.AlertDialogHeader, { children: [
874
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLTSTC3N5cjs.AlertDialogTitle, { className: "text-ods-text-primary", children: "Close this ticket?" }),
875
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLTSTC3N5cjs.AlertDialogDescription, { className: "text-ods-text-secondary", children: "Add an optional resolution note below. You can reopen the ticket later if needed." })
876
876
  ] }),
877
877
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
878
- _chunkFD4DBTFOcjs.Textarea,
878
+ _chunkLTSTC3N5cjs.Textarea,
879
879
  {
880
880
  value: resolution,
881
881
  onChange: (e) => setResolution(e.target.value),
882
882
  placeholder: "Resolution (optional)",
883
883
  rows: 3,
884
- maxLength: _chunkL7KZA7ZDcjs.TICKET_TEXT_MAX_CHARS,
884
+ maxLength: _chunkXIFOBQRQcjs.TICKET_TEXT_MAX_CHARS,
885
885
  className: "mt-2"
886
886
  }
887
887
  ),
888
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkFD4DBTFOcjs.AlertDialogFooter, { children: [
888
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkLTSTC3N5cjs.AlertDialogFooter, { children: [
889
889
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
890
- _chunkFD4DBTFOcjs.AlertDialogCancel,
890
+ _chunkLTSTC3N5cjs.AlertDialogCancel,
891
891
  {
892
892
  disabled: busy,
893
893
  className: "border-ods-border bg-transparent text-ods-text-primary hover:bg-ods-border",
@@ -895,7 +895,7 @@ function TicketReplyComposer({
895
895
  }
896
896
  ),
897
897
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
898
- _chunkFD4DBTFOcjs.AlertDialogAction,
898
+ _chunkLTSTC3N5cjs.AlertDialogAction,
899
899
  {
900
900
  onClick: () => void confirmClose(),
901
901
  disabled: busy,
@@ -957,10 +957,10 @@ var TICKET_FEED_HEIGHT = "h-[60vh] md:h-[420px]";
957
957
  var TICKET_FEED_INNER = "flex flex-col gap-4 md:gap-6 px-4 md:px-6 py-4 md:py-6";
958
958
  var TICKET_FEED_SKELETON_ROWS = 6;
959
959
  function TicketTimelinePanel({ ticket }) {
960
- const identity = _chunkRTGPIHVOcjs.useChatIdentity.call(void 0, );
961
- const externalId = _chunkL7KZA7ZDcjs.isOptimistic.call(void 0, ticket) ? null : ticket.external_id;
960
+ const identity = _chunkLDPEQGKTcjs.useChatIdentity.call(void 0, );
961
+ const externalId = _chunkXIFOBQRQcjs.isOptimistic.call(void 0, ticket) ? null : ticket.external_id;
962
962
  const { engagements, isLoading } = useTicketEngagements(externalId, !!externalId);
963
- const live = _chunkL7KZA7ZDcjs.useOptionalTicketLive.call(void 0, );
963
+ const live = _chunkXIFOBQRQcjs.useOptionalTicketLive.call(void 0, );
964
964
  const setOpenTicketId = _optionalChain([live, 'optionalAccess', _25 => _25.setOpenTicketId]);
965
965
  const markRead = _optionalChain([live, 'optionalAccess', _26 => _26.markRead]);
966
966
  const markReadDebounceRef = _react.useRef.call(void 0, null);
@@ -984,7 +984,7 @@ function TicketTimelinePanel({ ticket }) {
984
984
  markReadDebounceRef.current = setTimeout(() => {
985
985
  markReadDebounceRef.current = null;
986
986
  void markRead(externalId);
987
- }, _chunkL7KZA7ZDcjs.TICKET_MARK_READ_DEBOUNCE_MS);
987
+ }, _chunkXIFOBQRQcjs.TICKET_MARK_READ_DEBOUNCE_MS);
988
988
  }, [engagementsCount, externalId, markRead]);
989
989
  const { scrollRef, contentRef } = _usesticktobottom.useStickToBottom.call(void 0, { initial: "instant", resize: "smooth" });
990
990
  const bodyTurns = ticket.body ? ticket.body.split(TURN_SEPARATOR_RE).map((t) => t.trim()).filter(Boolean) : [];
@@ -999,11 +999,11 @@ function TicketTimelinePanel({ ticket }) {
999
999
  const customerName = (isViewerTheCustomer ? viewerName : null) || ticketCustomerName || viewerName || _optionalChain([identity, 'access', _40 => _40.user, 'optionalAccess', _41 => _41.email]) || "You";
1000
1000
  const customerAvatar = isViewerTheCustomer ? _nullishCoalesce(_optionalChain([identity, 'access', _42 => _42.user, 'optionalAccess', _43 => _43.avatarUrl]), () => ( void 0)) : void 0;
1001
1001
  if (isLoading) {
1002
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `${TICKET_FEED_FRAME} ${TICKET_FEED_HEIGHT}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: TICKET_FEED_INNER, children: Array.from({ length: TICKET_FEED_SKELETON_ROWS }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRTGPIHVOcjs.ChatMessageRowSkeleton, {}, i)) }) });
1002
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `${TICKET_FEED_FRAME} ${TICKET_FEED_HEIGHT}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: TICKET_FEED_INNER, children: Array.from({ length: TICKET_FEED_SKELETON_ROWS }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLDPEQGKTcjs.ChatMessageRowSkeleton, {}, i)) }) });
1003
1003
  }
1004
1004
  if (bodyTurns.length === 0 && engagements.length === 0) {
1005
1005
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1006
- _chunkHUOLB7ZNcjs.EmptyState,
1006
+ _chunkOHFS7VOUcjs.EmptyState,
1007
1007
  {
1008
1008
  type: "generic",
1009
1009
  title: "No conversation yet",
@@ -1018,7 +1018,7 @@ function TicketTimelinePanel({ ticket }) {
1018
1018
  const isResolution = turn.startsWith("[Resolution]");
1019
1019
  const text = isResolution ? turn.replace(/^\[Resolution\]\s*/, "") : turn;
1020
1020
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1021
- _chunkRTGPIHVOcjs.ChatMessageRow,
1021
+ _chunkLDPEQGKTcjs.ChatMessageRow,
1022
1022
  {
1023
1023
  displayName: customerName,
1024
1024
  avatarUrl: customerAvatar,
@@ -1047,13 +1047,13 @@ function TicketTimelinePanel({ ticket }) {
1047
1047
  }
1048
1048
  const engAttachments = mapEngagementAttachments(eng.attachments);
1049
1049
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1050
- _chunkRTGPIHVOcjs.ChatMessageRow,
1050
+ _chunkLDPEQGKTcjs.ChatMessageRow,
1051
1051
  {
1052
1052
  displayName: author,
1053
1053
  avatarUrl: avatarSrc,
1054
- timeLabel: eng.createdAt ? _chunkRTGPIHVOcjs.formatRelativeTime.call(void 0, eng.createdAt) : null,
1054
+ timeLabel: eng.createdAt ? _chunkLDPEQGKTcjs.formatRelativeTime.call(void 0, eng.createdAt) : null,
1055
1055
  body: stripAttachmentsPreamble(_nullishCoalesce(eng.body, () => ( ""))),
1056
- footer: engAttachments.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFD4DBTFOcjs.TicketAttachmentsList, { attachments: engAttachments, size: "compact" }) }) : null
1056
+ footer: engAttachments.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLTSTC3N5cjs.TicketAttachmentsList, { attachments: engAttachments, size: "compact" }) }) : null
1057
1057
  },
1058
1058
  eng.id
1059
1059
  );
@@ -1138,7 +1138,7 @@ function AssignedAgentRow({ assignedOwner }) {
1138
1138
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary text-h5", children: "Assigned to" }),
1139
1139
  displayLabel ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1.5 font-medium text-ods-text-primary", children: [
1140
1140
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1141
- _chunkEMCQGFXDcjs.SquareAvatar,
1141
+ _chunkMMOODW57cjs.SquareAvatar,
1142
1142
  {
1143
1143
  size: "sm",
1144
1144
  variant: "round",
@@ -1166,11 +1166,11 @@ function TicketRow({
1166
1166
  onActionCollapsed,
1167
1167
  id
1168
1168
  }) {
1169
- const optimistic = _chunkL7KZA7ZDcjs.isOptimistic.call(void 0, ticket);
1169
+ const optimistic = _chunkXIFOBQRQcjs.isOptimistic.call(void 0, ticket);
1170
1170
  const rowRef = _react.useRef.call(void 0, null);
1171
1171
  const handleClick = _react.useCallback.call(void 0, () => {
1172
1172
  onToggle(ticket.id);
1173
- _chunkIIMICN7Lcjs.scrollElementIntoView.call(void 0, rowRef.current, {
1173
+ _chunkC3BWIU7Rcjs.scrollElementIntoView.call(void 0, rowRef.current, {
1174
1174
  adjustTargetY: (raw) => {
1175
1175
  if (!rowRef.current) return raw;
1176
1176
  const expandedDrawer = document.querySelector('div[id^="ticket-drawer-"]');
@@ -1194,7 +1194,7 @@ function TicketRow({
1194
1194
  // so the badge accurately reflects "Closed" with a checkmark.
1195
1195
  statusLabel: _nullishCoalesce(ticket.pipeline_stage_label, () => ( void 0)),
1196
1196
  category: _nullishCoalesce(ticket.customer_company, () => ( void 0)),
1197
- timeAgo: ticket.hubspot_updated_at ? _chunkRTGPIHVOcjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : void 0,
1197
+ timeAgo: ticket.hubspot_updated_at ? _chunkLDPEQGKTcjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : void 0,
1198
1198
  // Linked-work chip: surfaced whenever the ticket has a linked
1199
1199
  // ClickUp task. Uses the linked task's own status so the chip text
1200
1200
  // reads "Working" / "Waiting on version release" / etc. — useful
@@ -1204,7 +1204,7 @@ function TicketRow({
1204
1204
  };
1205
1205
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: rowRef, id, className: "scroll-mt-24", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Collapsible, { open: expanded && !optimistic, className: "border-b border-ods-border last:border-b-0", children: [
1206
1206
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1207
- _chunkRTGPIHVOcjs.ChatTicketItem,
1207
+ _chunkLDPEQGKTcjs.ChatTicketItem,
1208
1208
  {
1209
1209
  ticket: tileData,
1210
1210
  onClick: optimistic ? void 0 : handleClick,
@@ -1236,14 +1236,14 @@ function TicketRow({
1236
1236
 
1237
1237
  // src/components/tickets/ticket-center.tsx
1238
1238
 
1239
- function TicketCenter({ toast: toast2 = _chunk3L7KCOGOcjs.toast } = {}) {
1240
- const identity = _chunkRTGPIHVOcjs.useChatIdentity.call(void 0, );
1239
+ function TicketCenter({ toast: toast2 = _chunkMGGGBHYDcjs.toast } = {}) {
1240
+ const identity = _chunkLDPEQGKTcjs.useChatIdentity.call(void 0, );
1241
1241
  if (identity.isLoading) {
1242
1242
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketCenterSkeleton, {});
1243
1243
  }
1244
1244
  if (identity.authTier === "anon" || !_optionalChain([identity, 'access', _62 => _62.user, 'optionalAccess', _63 => _63.email])) {
1245
1245
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1246
- _chunkHUOLB7ZNcjs.EmptyState,
1246
+ _chunkOHFS7VOUcjs.EmptyState,
1247
1247
  {
1248
1248
  type: "generic",
1249
1249
  title: "Sign in to manage tickets",
@@ -1308,7 +1308,7 @@ function TicketCenterAuthed({
1308
1308
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 text-ods-text-secondary text-h6", children: [
1309
1309
  lastUpdatedAt && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { children: [
1310
1310
  "Updated ",
1311
- _chunkRTGPIHVOcjs.formatRelativeTime.call(void 0, new Date(lastUpdatedAt))
1311
+ _chunkLDPEQGKTcjs.formatRelativeTime.call(void 0, new Date(lastUpdatedAt))
1312
1312
  ] }),
1313
1313
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1314
1314
  _chunkDFQYAYBHcjs.Button,
@@ -1324,22 +1324,22 @@ function TicketCenterAuthed({
1324
1324
  )
1325
1325
  ] })
1326
1326
  ] }),
1327
- isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketListSkeleton, {}) : merged.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEMCQGFXDcjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1328
- _chunkHUOLB7ZNcjs.EmptyState,
1327
+ isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketListSkeleton, {}) : merged.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMMOODW57cjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1328
+ _chunkOHFS7VOUcjs.EmptyState,
1329
1329
  {
1330
1330
  type: "generic",
1331
1331
  title: "No tickets yet",
1332
1332
  description: "Open one above to start the conversation.",
1333
1333
  showCTA: false
1334
1334
  }
1335
- ) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEMCQGFXDcjs.Card, { className: "overflow-hidden", children: merged.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1335
+ ) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMMOODW57cjs.Card, { className: "overflow-hidden", children: merged.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1336
1336
  TicketRow,
1337
1337
  {
1338
- id: _chunkFD4DBTFOcjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
1338
+ id: _chunkLTSTC3N5cjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
1339
1339
  ticket,
1340
1340
  expanded: expandedTicketId === ticket.id,
1341
1341
  onToggle: toggleRow,
1342
- busy: _chunkL7KZA7ZDcjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
1342
+ busy: _chunkXIFOBQRQcjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
1343
1343
  supportSystemDown,
1344
1344
  onSendMessage: actions.sendMessage,
1345
1345
  onClose: actions.closeTicket,
@@ -1353,22 +1353,22 @@ function TicketCenterAuthed({
1353
1353
  }
1354
1354
  function TicketCenterSkeleton() {
1355
1355
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6", children: [
1356
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkEMCQGFXDcjs.Card, { className: "p-6", children: [
1357
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2A4XES7Rcjs.Skeleton, { className: "mb-4 h-7 w-48" }),
1358
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2A4XES7Rcjs.Skeleton, { className: "mb-3 h-10 w-full" }),
1359
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2A4XES7Rcjs.Skeleton, { className: "h-24 w-full" })
1356
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkMMOODW57cjs.Card, { className: "p-6", children: [
1357
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBM5MVGH3cjs.Skeleton, { className: "mb-4 h-7 w-48" }),
1358
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBM5MVGH3cjs.Skeleton, { className: "mb-3 h-10 w-full" }),
1359
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBM5MVGH3cjs.Skeleton, { className: "h-24 w-full" })
1360
1360
  ] }),
1361
1361
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketListSkeleton, {})
1362
1362
  ] });
1363
1363
  }
1364
1364
  function TicketListSkeleton() {
1365
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEMCQGFXDcjs.Card, { className: "overflow-hidden", children: [0, 1, 2].map((i) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-20 items-center gap-4 border-b border-ods-border px-4 last:border-b-0", children: [
1365
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMMOODW57cjs.Card, { className: "overflow-hidden", children: [0, 1, 2].map((i) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-20 items-center gap-4 border-b border-ods-border px-4 last:border-b-0", children: [
1366
1366
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-1 flex-col gap-2", children: [
1367
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2A4XES7Rcjs.Skeleton, { className: "h-4 w-2/3" }),
1368
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2A4XES7Rcjs.Skeleton, { className: "h-3 w-full" })
1367
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBM5MVGH3cjs.Skeleton, { className: "h-4 w-2/3" }),
1368
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBM5MVGH3cjs.Skeleton, { className: "h-3 w-full" })
1369
1369
  ] }),
1370
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2A4XES7Rcjs.Skeleton, { className: "h-8 w-20" }),
1371
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2A4XES7Rcjs.Skeleton, { className: "h-8 w-16" })
1370
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBM5MVGH3cjs.Skeleton, { className: "h-8 w-20" }),
1371
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBM5MVGH3cjs.Skeleton, { className: "h-8 w-16" })
1372
1372
  ] }, i)) });
1373
1373
  }
1374
1374
 
@@ -1393,10 +1393,10 @@ function HelpCenterCard({
1393
1393
  onClearReplyError,
1394
1394
  id
1395
1395
  }) {
1396
- const optimistic = _chunkL7KZA7ZDcjs.isOptimistic.call(void 0, ticket);
1396
+ const optimistic = _chunkXIFOBQRQcjs.isOptimistic.call(void 0, ticket);
1397
1397
  const rawStatus = (_nullishCoalesce(ticket.status, () => ( "OPEN"))).toUpperCase();
1398
1398
  const priority = (_nullishCoalesce(ticket.priority, () => ( ""))).toUpperCase();
1399
- const relativeUpdated = ticket.hubspot_updated_at ? _chunkRTGPIHVOcjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : "recently";
1399
+ const relativeUpdated = ticket.hubspot_updated_at ? _chunkLDPEQGKTcjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : "recently";
1400
1400
  const title = (ticket.subject || "").trim() || "(untitled)";
1401
1401
  const subtitle = `UPDATED ${relativeUpdated}, #${ticket.external_id || "\u2014"}${ticket.pipeline_stage_label ? `, ${ticket.pipeline_stage_label}` : ""}`;
1402
1402
  const description = _nullishCoalesce(_nullishCoalesce(ticket.preview, () => ( ticket.body)), () => ( ""));
@@ -1409,17 +1409,17 @@ function HelpCenterCard({
1409
1409
  _react.useEffect.call(void 0, () => {
1410
1410
  if (!isExpanded) return void 0;
1411
1411
  const raf = requestAnimationFrame(() => {
1412
- _chunkIIMICN7Lcjs.scrollElementIntoView.call(void 0, rowRef.current, {
1413
- headerOffset: _chunkIIMICN7Lcjs.STICKY_HEADER_OFFSET_PX
1412
+ _chunkC3BWIU7Rcjs.scrollElementIntoView.call(void 0, rowRef.current, {
1413
+ headerOffset: _chunkC3BWIU7Rcjs.STICKY_HEADER_OFFSET_PX
1414
1414
  });
1415
1415
  });
1416
1416
  return () => cancelAnimationFrame(raf);
1417
1417
  }, [isExpanded]);
1418
- const live = _chunkL7KZA7ZDcjs.useOptionalTicketLive.call(void 0, );
1418
+ const live = _chunkXIFOBQRQcjs.useOptionalTicketLive.call(void 0, );
1419
1419
  const unreadCount = !optimistic && ticket.external_id && _optionalChain([live, 'optionalAccess', _64 => _64.unreadByTicket, 'access', _65 => _65[ticket.external_id]]) || 0;
1420
1420
  const rightBadges = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1421
1421
  unreadCount > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1422
- _chunkEMCQGFXDcjs.StatusBadge,
1422
+ _chunkMMOODW57cjs.StatusBadge,
1423
1423
  {
1424
1424
  text: `${unreadCount} NEW`,
1425
1425
  colorScheme: "warning",
@@ -1428,16 +1428,16 @@ function HelpCenterCard({
1428
1428
  }
1429
1429
  ),
1430
1430
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1431
- _chunkEMCQGFXDcjs.StatusBadge,
1431
+ _chunkMMOODW57cjs.StatusBadge,
1432
1432
  {
1433
1433
  text: rawStatus,
1434
- colorScheme: _chunkEMCQGFXDcjs.getStatusColorScheme.call(void 0, rawStatus),
1434
+ colorScheme: _chunkMMOODW57cjs.getStatusColorScheme.call(void 0, rawStatus),
1435
1435
  variant: "card",
1436
1436
  className: "border border-ods-border"
1437
1437
  }
1438
1438
  ),
1439
1439
  priority && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1440
- _chunkEMCQGFXDcjs.StatusBadge,
1440
+ _chunkMMOODW57cjs.StatusBadge,
1441
1441
  {
1442
1442
  text: priority,
1443
1443
  colorScheme: mapPriorityScheme(priority),
@@ -1451,7 +1451,7 @@ function HelpCenterCard({
1451
1451
  {
1452
1452
  ref: rowRef,
1453
1453
  id,
1454
- style: { scrollMarginTop: _chunkIIMICN7Lcjs.STICKY_HEADER_OFFSET_PX },
1454
+ style: { scrollMarginTop: _chunkC3BWIU7Rcjs.STICKY_HEADER_OFFSET_PX },
1455
1455
  className: `border-b border-ods-border last:border-b-0 ${optimistic ? "opacity-60" : ""}`,
1456
1456
  "aria-busy": optimistic || void 0,
1457
1457
  children: [
@@ -1463,9 +1463,9 @@ function HelpCenterCard({
1463
1463
  disabled: !isExpandable,
1464
1464
  "aria-expanded": isExpandable ? isExpanded : void 0,
1465
1465
  "aria-controls": isExpanded ? `help-center-drawer-${ticket.id}` : void 0,
1466
- className: "w-full p-[12px] text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent disabled:cursor-default md:p-[16px]",
1466
+ className: "w-full p-[12px] text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent disabled:cursor-default content-md:p-[16px]",
1467
1467
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1468
- _chunk3G76LRGLcjs.DevCardRowContent,
1468
+ _chunkSYXQLETRcjs.DevCardRowContent,
1469
1469
  {
1470
1470
  title,
1471
1471
  subtitle,
@@ -1505,9 +1505,9 @@ function mapPriorityScheme(priority) {
1505
1505
 
1506
1506
  var SUBJECT_MAX_CHARS = 200;
1507
1507
  function HelpCenterCreateFormSkeleton() {
1508
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full flex-col rounded-2xl border border-ods-border p-6 md:rounded-3xl md:p-8 lg:p-10", children: [
1509
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mb-6 md:mb-8", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mb-3 h-10 w-72 animate-pulse rounded bg-ods-border md:mb-4" }) }),
1510
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-grow flex-col space-y-4 md:space-y-6", children: [
1508
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full flex-col rounded-2xl border border-ods-border p-6 content-md:rounded-3xl content-md:p-8 content-lg:p-10", children: [
1509
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mb-6 content-md:mb-8", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mb-3 h-10 w-72 animate-pulse rounded bg-ods-border content-md:mb-4" }) }),
1510
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-grow flex-col space-y-4 content-md:space-y-6", children: [
1511
1511
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "hidden", "aria-hidden": true }),
1512
1512
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "hidden", "aria-hidden": true }),
1513
1513
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "hidden", "aria-hidden": true }),
@@ -1524,7 +1524,7 @@ function HelpCenterCreateFormSkeleton() {
1524
1524
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-7 w-7 shrink-0 animate-pulse rounded bg-ods-border" }),
1525
1525
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-4 w-40 animate-pulse rounded bg-ods-border" })
1526
1526
  ] }) }),
1527
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mt-auto flex w-full flex-col items-center justify-end gap-4 pt-2 md:flex-row md:gap-6", children: [
1527
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mt-auto flex w-full flex-col items-center justify-end gap-4 pt-2 content-md:flex-row content-md:gap-6", children: [
1528
1528
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-4 w-72 animate-pulse rounded bg-ods-border" }),
1529
1529
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-12 w-32 animate-pulse rounded bg-ods-border" })
1530
1530
  ] })
@@ -1540,12 +1540,12 @@ function HelpCenterCreateForm({
1540
1540
  const [subject, setSubject] = _react.useState.call(void 0, "");
1541
1541
  const [subjectError, setSubjectError] = _react.useState.call(void 0, null);
1542
1542
  const subjectField = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col", children: [
1543
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk2A4XES7Rcjs.Label, { htmlFor: "help-center-subject", children: [
1543
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkBM5MVGH3cjs.Label, { htmlFor: "help-center-subject", children: [
1544
1544
  "Subject",
1545
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2A4XES7Rcjs.RequiredMark, {})
1545
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBM5MVGH3cjs.RequiredMark, {})
1546
1546
  ] }),
1547
1547
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1548
- _chunk2A4XES7Rcjs.Input,
1548
+ _chunkBM5MVGH3cjs.Input,
1549
1549
  {
1550
1550
  id: "help-center-subject",
1551
1551
  type: "text",
@@ -1566,7 +1566,7 @@ function HelpCenterCreateForm({
1566
1566
  subjectError && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { id: "help-center-subject-error", className: "mt-1 text-ods-error text-h6", children: subjectError })
1567
1567
  ] });
1568
1568
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1569
- _chunkCYYTD5ZKcjs.ContactForm,
1569
+ _chunk262YQFOScjs.ContactForm,
1570
1570
  {
1571
1571
  rescue: null,
1572
1572
  title: "Open a new ticket",
@@ -1604,31 +1604,31 @@ function HelpCenterCreateForm({
1604
1604
 
1605
1605
  // src/components/tickets/help-center-list.tsx
1606
1606
 
1607
- function HelpCenterList({ toast: toast2 = _chunk3L7KCOGOcjs.toast, backButton, title, shell } = {}) {
1608
- const identity = _chunkRTGPIHVOcjs.useChatIdentity.call(void 0, );
1607
+ function HelpCenterList({ toast: toast2 = _chunkMGGGBHYDcjs.toast, backButton, title, shell } = {}) {
1608
+ const identity = _chunkLDPEQGKTcjs.useChatIdentity.call(void 0, );
1609
1609
  const searchParams = _chunk7DNL734Scjs.useSearchParams.call(void 0, );
1610
1610
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
1611
1611
  const pathname = _chunk7DNL734Scjs.usePathname.call(void 0, );
1612
- const search = searchParams.get(_chunkFD4DBTFOcjs.DEV_SECTION_PARAM_KEYS.search) || "";
1612
+ const search = searchParams.get(_chunkLTSTC3N5cjs.DEV_SECTION_PARAM_KEYS.search) || "";
1613
1613
  const status = searchParams.get("status") || "all";
1614
- const ticketParam = searchParams.get(_chunkFD4DBTFOcjs.TICKET_OPEN_PARAM) || "";
1615
- const page = _chunk4OGAXAEGcjs.positiveInt.call(void 0, searchParams.get("page"), 1);
1614
+ const ticketParam = searchParams.get(_chunkLTSTC3N5cjs.TICKET_OPEN_PARAM) || "";
1615
+ const page = _chunkABU3TGXAcjs.positiveInt.call(void 0, searchParams.get("page"), 1);
1616
1616
  if (identity.isLoading) {
1617
1617
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1618
- _chunk3G76LRGLcjs.DevSectionPage,
1618
+ _chunkSYXQLETRcjs.DevSectionPage,
1619
1619
  {
1620
1620
  sectionKey: "tickets",
1621
1621
  backButton,
1622
1622
  title,
1623
1623
  shell,
1624
1624
  preControls: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HelpCenterCreateFormSkeleton, {}),
1625
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3G76LRGLcjs.DevCardRowSkeletonList, {})
1625
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSYXQLETRcjs.DevCardRowSkeletonList, {})
1626
1626
  }
1627
1627
  );
1628
1628
  }
1629
1629
  if (identity.authTier === "anon" || !_optionalChain([identity, 'access', _66 => _66.user, 'optionalAccess', _67 => _67.email])) {
1630
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3G76LRGLcjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1631
- _chunkHUOLB7ZNcjs.EmptyState,
1630
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSYXQLETRcjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1631
+ _chunkOHFS7VOUcjs.EmptyState,
1632
1632
  {
1633
1633
  type: "generic",
1634
1634
  title: "Sign in to manage tickets",
@@ -1679,8 +1679,8 @@ function HelpCenterListAuthed({
1679
1679
  const setOpenTicket = _react.useCallback.call(void 0,
1680
1680
  (externalId) => {
1681
1681
  const params = new URLSearchParams(searchParams.toString());
1682
- if (externalId) params.set(_chunkFD4DBTFOcjs.TICKET_OPEN_PARAM, externalId);
1683
- else params.delete(_chunkFD4DBTFOcjs.TICKET_OPEN_PARAM);
1682
+ if (externalId) params.set(_chunkLTSTC3N5cjs.TICKET_OPEN_PARAM, externalId);
1683
+ else params.delete(_chunkLTSTC3N5cjs.TICKET_OPEN_PARAM);
1684
1684
  const qs = params.toString();
1685
1685
  router.replace(qs ? `${pathname}?${qs}` : pathname, { scroll: false });
1686
1686
  },
@@ -1737,7 +1737,7 @@ function HelpCenterListAuthed({
1737
1737
  [tickets, ticketParam, setOpenTicket]
1738
1738
  );
1739
1739
  const merged = [...optimisticTickets, ...tickets];
1740
- _chunk3L7KCOGOcjs.useScrollToHash.call(void 0, tickets, { headerOffset: _chunkIIMICN7Lcjs.STICKY_HEADER_OFFSET_PX });
1740
+ _chunkMGGGBHYDcjs.useScrollToHash.call(void 0, tickets, { headerOffset: _chunkC3BWIU7Rcjs.STICKY_HEADER_OFFSET_PX });
1741
1741
  const hasActiveFilters = search !== "" || status !== "" && status !== "all";
1742
1742
  const hasResults = merged.length > 0;
1743
1743
  const form = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -1757,15 +1757,15 @@ function HelpCenterListAuthed({
1757
1757
  ] }),
1758
1758
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDFQYAYBHcjs.Button, { type: "button", variant: "accent", onClick: () => refetch(), children: "Retry" })
1759
1759
  ] }),
1760
- !error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3G76LRGLcjs.DevCardRowSkeletonList, {}) : !hasResults && isFetching ? (
1760
+ !error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSYXQLETRcjs.DevCardRowSkeletonList, {}) : !hasResults && isFetching ? (
1761
1761
  // Bridge state — background refetch in flight and the
1762
1762
  // optimistic placeholder was just removed by the mutation
1763
1763
  // callback. Without this branch "No tickets yet" would flash
1764
1764
  // for ~50ms between `removeOptimistic` and the server
1765
1765
  // response landing.
1766
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3G76LRGLcjs.DevCardRowSkeletonList, { rows: 1 })
1766
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSYXQLETRcjs.DevCardRowSkeletonList, { rows: 1 })
1767
1767
  ) : !hasResults ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1768
- _chunk3G76LRGLcjs.ListEmptyState,
1768
+ _chunkSYXQLETRcjs.ListEmptyState,
1769
1769
  {
1770
1770
  isFiltered: hasActiveFilters,
1771
1771
  filtered: {
@@ -1796,11 +1796,11 @@ function HelpCenterListAuthed({
1796
1796
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full overflow-clip rounded-[6px] border border-ods-border bg-ods-card", children: merged.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1797
1797
  HelpCenterCard,
1798
1798
  {
1799
- id: _chunkFD4DBTFOcjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
1799
+ id: _chunkLTSTC3N5cjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
1800
1800
  ticket,
1801
1801
  expanded: expandedTicketId === ticket.id,
1802
1802
  onToggle: toggleRow,
1803
- busy: _chunkL7KZA7ZDcjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
1803
+ busy: _chunkXIFOBQRQcjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
1804
1804
  supportSystemDown,
1805
1805
  onSendMessage: actions.sendMessage,
1806
1806
  onClose: actions.closeTicket,
@@ -1812,9 +1812,9 @@ function HelpCenterListAuthed({
1812
1812
  ticket.id
1813
1813
  )) })
1814
1814
  ) }),
1815
- !error && totalPages > 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHUOLB7ZNcjs.UnifiedPagination, { currentPage: page, totalPages })
1815
+ !error && totalPages > 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOHFS7VOUcjs.UnifiedPagination, { currentPage: page, totalPages })
1816
1816
  ] });
1817
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3G76LRGLcjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, preControls: form, children: body });
1817
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSYXQLETRcjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, preControls: form, children: body });
1818
1818
  }
1819
1819
 
1820
1820