@flamingo-stack/openframe-frontend-core 0.0.579-1952.5335.1 → 0.0.579

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 (236) hide show
  1. package/dist/chat-protocol/decode.d.ts.map +1 -1
  2. package/dist/chat-protocol/events.d.ts +47 -1
  3. package/dist/chat-protocol/events.d.ts.map +1 -1
  4. package/dist/chat-protocol/index.cjs +51 -0
  5. package/dist/chat-protocol/index.cjs.map +1 -1
  6. package/dist/chat-protocol/index.js +48 -1
  7. package/dist/chat-protocol/index.js.map +1 -1
  8. package/dist/chat-protocol/leading-frames.d.ts +9 -3
  9. package/dist/chat-protocol/leading-frames.d.ts.map +1 -1
  10. package/dist/chat-protocol/nats-decoder.d.ts +41 -0
  11. package/dist/chat-protocol/nats-decoder.d.ts.map +1 -1
  12. package/dist/{chunk-3B42TFEE.cjs → chunk-36TJYCF3.cjs} +27 -27
  13. package/dist/{chunk-3B42TFEE.cjs.map → chunk-36TJYCF3.cjs.map} +1 -1
  14. package/dist/{chunk-YYEVFC3K.cjs → chunk-37XJYOAY.cjs} +17 -17
  15. package/dist/{chunk-YYEVFC3K.cjs.map → chunk-37XJYOAY.cjs.map} +1 -1
  16. package/dist/{chunk-DBP7S75Q.js → chunk-3AX3ZEY3.js} +1481 -1318
  17. package/dist/chunk-3AX3ZEY3.js.map +1 -0
  18. package/dist/{chunk-DGB2FLFH.cjs → chunk-4FJSN2XW.cjs} +10 -10
  19. package/dist/{chunk-DGB2FLFH.cjs.map → chunk-4FJSN2XW.cjs.map} +1 -1
  20. package/dist/{chunk-WHSSI3S7.cjs → chunk-4HGRXFQP.cjs} +3 -3
  21. package/dist/{chunk-WHSSI3S7.cjs.map → chunk-4HGRXFQP.cjs.map} +1 -1
  22. package/dist/{chunk-SY5HCZZO.cjs → chunk-4LZ7B5H5.cjs} +5 -5
  23. package/dist/{chunk-SY5HCZZO.cjs.map → chunk-4LZ7B5H5.cjs.map} +1 -1
  24. package/dist/{chunk-XJ45MHWI.js → chunk-4WSKSNXL.js} +9 -9
  25. package/dist/{chunk-ZCEQLHU3.js → chunk-5Y6TPFW7.js} +5 -5
  26. package/dist/{chunk-EVTRRDIH.cjs → chunk-A6C5HOD7.cjs} +23 -23
  27. package/dist/{chunk-EVTRRDIH.cjs.map → chunk-A6C5HOD7.cjs.map} +1 -1
  28. package/dist/{chunk-RXZWUJEB.js → chunk-AKPLEWMH.js} +2 -2
  29. package/dist/{chunk-7WKFLOC7.cjs → chunk-BCJQ7CJE.cjs} +11 -11
  30. package/dist/{chunk-7WKFLOC7.cjs.map → chunk-BCJQ7CJE.cjs.map} +1 -1
  31. package/dist/{chunk-C4KL7OQI.js → chunk-BW4WDUSI.js} +3 -3
  32. package/dist/{chunk-L66XBQM6.js → chunk-CP5EYMNL.js} +276 -160
  33. package/dist/chunk-CP5EYMNL.js.map +1 -0
  34. package/dist/{chunk-QOPQ6BCA.js → chunk-D44S2QLI.js} +3 -3
  35. package/dist/{chunk-CGVPUA4X.js → chunk-DB3TV4CW.js} +6 -6
  36. package/dist/{chunk-PITZMTGE.cjs → chunk-FEVLXRTC.cjs} +506 -390
  37. package/dist/chunk-FEVLXRTC.cjs.map +1 -0
  38. package/dist/{chunk-TYJITV3H.js → chunk-H4BPHGU5.js} +3 -3
  39. package/dist/{chunk-C7Q2PVHD.cjs → chunk-H54EPP3P.cjs} +7 -7
  40. package/dist/{chunk-C7Q2PVHD.cjs.map → chunk-H54EPP3P.cjs.map} +1 -1
  41. package/dist/{chunk-NWAUHBYH.js → chunk-HGA74X35.js} +4 -4
  42. package/dist/{chunk-4C3MS2G6.cjs → chunk-HHJVIHVR.cjs} +81 -81
  43. package/dist/{chunk-4C3MS2G6.cjs.map → chunk-HHJVIHVR.cjs.map} +1 -1
  44. package/dist/{chunk-3XFMM34I.cjs → chunk-IFYQ7DHV.cjs} +48 -48
  45. package/dist/{chunk-3XFMM34I.cjs.map → chunk-IFYQ7DHV.cjs.map} +1 -1
  46. package/dist/{chunk-QYQXAXVR.cjs → chunk-IKDC3R7V.cjs} +4 -3
  47. package/dist/chunk-IKDC3R7V.cjs.map +1 -0
  48. package/dist/{chunk-W6JA6SFD.js → chunk-JRYS4VMV.js} +45 -45
  49. package/dist/chunk-JRYS4VMV.js.map +1 -0
  50. package/dist/{chunk-AT4WAFJO.js → chunk-L2CF2QZW.js} +7 -7
  51. package/dist/{chunk-2BFZHTSD.cjs → chunk-LEISUAHF.cjs} +18 -8
  52. package/dist/chunk-LEISUAHF.cjs.map +1 -0
  53. package/dist/{chunk-AAHKPPGQ.cjs → chunk-M5GWCMYE.cjs} +42 -42
  54. package/dist/{chunk-AAHKPPGQ.cjs.map → chunk-M5GWCMYE.cjs.map} +1 -1
  55. package/dist/{chunk-PQETCTJ4.js → chunk-MXOSTJAG.js} +4 -3
  56. package/dist/chunk-MXOSTJAG.js.map +1 -0
  57. package/dist/{chunk-653A7FPP.cjs → chunk-NPVDKOGD.cjs} +22 -22
  58. package/dist/{chunk-653A7FPP.cjs.map → chunk-NPVDKOGD.cjs.map} +1 -1
  59. package/dist/{chunk-2ML5QEDH.js → chunk-O2FTVZOD.js} +5 -5
  60. package/dist/{chunk-OCSAB6NT.cjs → chunk-OGZAFM6M.cjs} +5 -5
  61. package/dist/{chunk-OCSAB6NT.cjs.map → chunk-OGZAFM6M.cjs.map} +1 -1
  62. package/dist/{chunk-CSBNQJSI.js → chunk-PMENIZXI.js} +6 -6
  63. package/dist/{chunk-PFTEG6L7.js → chunk-PWOYEUIQ.js} +7 -7
  64. package/dist/{chunk-KXLJT5U5.js → chunk-QCP2KV7P.js} +5 -5
  65. package/dist/{chunk-6QDW4CDG.js → chunk-QGJYWLF4.js} +2 -2
  66. package/dist/{chunk-VLRXLTR4.cjs → chunk-RKGOVTXZ.cjs} +377 -214
  67. package/dist/chunk-RKGOVTXZ.cjs.map +1 -0
  68. package/dist/{chunk-HM2R5MDR.js → chunk-T5HDPHN6.js} +13 -3
  69. package/dist/chunk-T5HDPHN6.js.map +1 -0
  70. package/dist/{chunk-GP2QLZIN.cjs → chunk-YW4WBNYV.cjs} +37 -37
  71. package/dist/{chunk-GP2QLZIN.cjs.map → chunk-YW4WBNYV.cjs.map} +1 -1
  72. package/dist/{chunk-36NFJULV.cjs → chunk-ZI27ALYX.cjs} +41 -41
  73. package/dist/chunk-ZI27ALYX.cjs.map +1 -0
  74. package/dist/components/case-studies/index.cjs +12 -12
  75. package/dist/components/case-studies/index.js +6 -6
  76. package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
  77. package/dist/components/chat/guide-display.d.ts +14 -0
  78. package/dist/components/chat/guide-display.d.ts.map +1 -0
  79. package/dist/components/chat/index.cjs +11 -3
  80. package/dist/components/chat/index.cjs.map +1 -1
  81. package/dist/components/chat/index.d.ts +1 -0
  82. package/dist/components/chat/index.d.ts.map +1 -1
  83. package/dist/components/chat/index.js +10 -2
  84. package/dist/components/chat/stream/chat-stream-reducer.d.ts +9 -0
  85. package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +1 -1
  86. package/dist/components/chat/stream/delta-batcher.d.ts +3 -3
  87. package/dist/components/chat/stream/delta-batcher.d.ts.map +1 -1
  88. package/dist/components/chat/stream/message-mutations.d.ts.map +1 -1
  89. package/dist/components/chat/types/component.types.d.ts +6 -0
  90. package/dist/components/chat/types/component.types.d.ts.map +1 -1
  91. package/dist/components/chat/types/message.types.d.ts +30 -2
  92. package/dist/components/chat/types/message.types.d.ts.map +1 -1
  93. package/dist/components/chat/types/network.types.d.ts +3 -1
  94. package/dist/components/chat/types/network.types.d.ts.map +1 -1
  95. package/dist/components/chat/types/processing.types.d.ts +4 -1
  96. package/dist/components/chat/types/processing.types.d.ts.map +1 -1
  97. package/dist/components/chat/utils/approval-display.d.ts +36 -8
  98. package/dist/components/chat/utils/approval-display.d.ts.map +1 -1
  99. package/dist/components/chat/utils/extract-incomplete-message-state.d.ts.map +1 -1
  100. package/dist/components/chat/utils/index.d.ts +1 -1
  101. package/dist/components/chat/utils/index.d.ts.map +1 -1
  102. package/dist/components/chat/utils/message-segment-accumulator.d.ts +16 -4
  103. package/dist/components/chat/utils/message-segment-accumulator.d.ts.map +1 -1
  104. package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
  105. package/dist/components/chat/utils/resolve-fetched-card-href.d.ts +1 -1
  106. package/dist/components/contact/index.cjs +7 -7
  107. package/dist/components/contact/index.js +6 -6
  108. package/dist/components/docs/index.cjs +10 -10
  109. package/dist/components/docs/index.js +9 -9
  110. package/dist/components/embeds/index.cjs +7 -7
  111. package/dist/components/embeds/index.js +6 -6
  112. package/dist/components/faq/index.cjs +7 -7
  113. package/dist/components/faq/index.js +6 -6
  114. package/dist/components/features/board/board.d.ts.map +1 -1
  115. package/dist/components/features/index.cjs +8 -6
  116. package/dist/components/features/index.cjs.map +1 -1
  117. package/dist/components/features/index.js +7 -5
  118. package/dist/components/features/sortable-list/index.d.ts +2 -1
  119. package/dist/components/features/sortable-list/index.d.ts.map +1 -1
  120. package/dist/components/features/sortable-list/sortable-list.d.ts +8 -1
  121. package/dist/components/features/sortable-list/sortable-list.d.ts.map +1 -1
  122. package/dist/components/features/sortable-list/sortable-move-buttons.d.ts +24 -0
  123. package/dist/components/features/sortable-list/sortable-move-buttons.d.ts.map +1 -0
  124. package/dist/components/features/sortable-list/use-sortable-item.d.ts +12 -4
  125. package/dist/components/features/sortable-list/use-sortable-item.d.ts.map +1 -1
  126. package/dist/components/features/ticket-status-config-list/ticket-status-config-list.d.ts +21 -5
  127. package/dist/components/features/ticket-status-config-list/ticket-status-config-list.d.ts.map +1 -1
  128. package/dist/components/help-center-pages/index.cjs +26 -26
  129. package/dist/components/help-center-pages/index.js +17 -17
  130. package/dist/components/index.cjs +139 -129
  131. package/dist/components/index.cjs.map +1 -1
  132. package/dist/components/index.js +26 -16
  133. package/dist/components/index.js.map +1 -1
  134. package/dist/components/meeting-scheduler/index.cjs +37 -37
  135. package/dist/components/meeting-scheduler/index.js +5 -5
  136. package/dist/components/navigation/index.cjs +9 -9
  137. package/dist/components/navigation/index.js +8 -8
  138. package/dist/components/onboarding-guides/index.cjs +9 -9
  139. package/dist/components/onboarding-guides/index.js +8 -8
  140. package/dist/components/tickets/index.cjs +10 -10
  141. package/dist/components/tickets/index.js +9 -9
  142. package/dist/components/ui/file-manager/index.cjs +4 -4
  143. package/dist/components/ui/file-manager/index.js +1 -1
  144. package/dist/components/ui/index.cjs +14 -6
  145. package/dist/components/ui/index.cjs.map +1 -1
  146. package/dist/components/ui/index.js +13 -5
  147. package/dist/components/ui/input.d.ts +2 -0
  148. package/dist/components/ui/input.d.ts.map +1 -1
  149. package/dist/components/ui/textarea.d.ts +2 -0
  150. package/dist/components/ui/textarea.d.ts.map +1 -1
  151. package/dist/components/ui/ticket-status-config-row.d.ts +10 -4
  152. package/dist/components/ui/ticket-status-config-row.d.ts.map +1 -1
  153. package/dist/hooks/index.cjs +7 -3
  154. package/dist/hooks/index.cjs.map +1 -1
  155. package/dist/hooks/index.js +6 -2
  156. package/dist/hooks/ui/index.d.ts +1 -0
  157. package/dist/hooks/ui/index.d.ts.map +1 -1
  158. package/dist/hooks/ui/use-drag-and-drop-enabled.d.ts +31 -0
  159. package/dist/hooks/ui/use-drag-and-drop-enabled.d.ts.map +1 -0
  160. package/dist/hooks/ui/use-media-query.d.ts.map +1 -1
  161. package/dist/index.cjs +25 -11
  162. package/dist/index.cjs.map +1 -1
  163. package/dist/index.js +23 -9
  164. package/dist/index.js.map +1 -1
  165. package/dist/utils/index.cjs.map +1 -1
  166. package/dist/utils/index.js.map +1 -1
  167. package/package.json +1 -4
  168. package/src/chat-protocol/__tests__/__snapshots__/nats-decoder-golden.test.ts.snap +80 -0
  169. package/src/chat-protocol/__tests__/nats-decoder-golden.test.ts +118 -1
  170. package/src/chat-protocol/decode.ts +4 -3
  171. package/src/chat-protocol/events.ts +51 -0
  172. package/src/chat-protocol/leading-frames.ts +9 -3
  173. package/src/chat-protocol/nats-decoder.ts +110 -1
  174. package/src/components/chat/__tests__/chat-pending-turn.test.tsx +19 -0
  175. package/src/components/chat/chat-message-enhanced.tsx +13 -1
  176. package/src/components/chat/guide-display.tsx +42 -0
  177. package/src/components/chat/index.ts +1 -0
  178. package/src/components/chat/stream/__tests__/chat-stream-reducer.test.ts +90 -0
  179. package/src/components/chat/stream/chat-dialog-store.ts +1 -1
  180. package/src/components/chat/stream/chat-stream-reducer.ts +49 -11
  181. package/src/components/chat/stream/delta-batcher.ts +9 -4
  182. package/src/components/chat/stream/message-mutations.ts +2 -0
  183. package/src/components/chat/types/component.types.ts +9 -0
  184. package/src/components/chat/types/message.types.ts +32 -0
  185. package/src/components/chat/types/network.types.ts +3 -1
  186. package/src/components/chat/types/processing.types.ts +4 -1
  187. package/src/components/chat/utils/__tests__/process-historical-messages-approvals.test.ts +93 -0
  188. package/src/components/chat/utils/__tests__/process-historical-messages-golden.test.ts +78 -1
  189. package/src/components/chat/utils/approval-display.ts +53 -8
  190. package/src/components/chat/utils/extract-incomplete-message-state.ts +1 -0
  191. package/src/components/chat/utils/index.ts +6 -1
  192. package/src/components/chat/utils/message-segment-accumulator.ts +37 -3
  193. package/src/components/chat/utils/process-historical-messages.ts +44 -7
  194. package/src/components/chat/utils/resolve-fetched-card-href.ts +1 -1
  195. package/src/components/features/board/.board.md +1 -0
  196. package/src/components/features/board/board.tsx +11 -1
  197. package/src/components/features/sortable-list/.sortable-list.md +23 -12
  198. package/src/components/features/sortable-list/index.ts +2 -1
  199. package/src/components/features/sortable-list/sortable-list.tsx +16 -5
  200. package/src/components/features/sortable-list/sortable-move-buttons.tsx +81 -0
  201. package/src/components/features/sortable-list/use-sortable-item.ts +25 -13
  202. package/src/components/features/ticket-status-config-list/ticket-status-config-list.tsx +55 -62
  203. package/src/components/ui/.ticket-status-config-row.md +11 -9
  204. package/src/components/ui/input.tsx +5 -2
  205. package/src/components/ui/textarea.tsx +5 -2
  206. package/src/components/ui/ticket-status-config-row.tsx +162 -70
  207. package/src/hooks/ui/.index.md +1 -0
  208. package/src/hooks/ui/.use-drag-and-drop-enabled.md +32 -0
  209. package/src/hooks/ui/index.ts +1 -0
  210. package/src/hooks/ui/use-drag-and-drop-enabled.ts +37 -0
  211. package/src/hooks/ui/use-media-query.ts +3 -2
  212. package/src/stories/ChatMessageEnhanced.stories.tsx +7 -3
  213. package/dist/chunk-2BFZHTSD.cjs.map +0 -1
  214. package/dist/chunk-36NFJULV.cjs.map +0 -1
  215. package/dist/chunk-DBP7S75Q.js.map +0 -1
  216. package/dist/chunk-HM2R5MDR.js.map +0 -1
  217. package/dist/chunk-L66XBQM6.js.map +0 -1
  218. package/dist/chunk-PITZMTGE.cjs.map +0 -1
  219. package/dist/chunk-PQETCTJ4.js.map +0 -1
  220. package/dist/chunk-QYQXAXVR.cjs.map +0 -1
  221. package/dist/chunk-VLRXLTR4.cjs.map +0 -1
  222. package/dist/chunk-W6JA6SFD.js.map +0 -1
  223. /package/dist/{chunk-XJ45MHWI.js.map → chunk-4WSKSNXL.js.map} +0 -0
  224. /package/dist/{chunk-ZCEQLHU3.js.map → chunk-5Y6TPFW7.js.map} +0 -0
  225. /package/dist/{chunk-RXZWUJEB.js.map → chunk-AKPLEWMH.js.map} +0 -0
  226. /package/dist/{chunk-C4KL7OQI.js.map → chunk-BW4WDUSI.js.map} +0 -0
  227. /package/dist/{chunk-QOPQ6BCA.js.map → chunk-D44S2QLI.js.map} +0 -0
  228. /package/dist/{chunk-CGVPUA4X.js.map → chunk-DB3TV4CW.js.map} +0 -0
  229. /package/dist/{chunk-TYJITV3H.js.map → chunk-H4BPHGU5.js.map} +0 -0
  230. /package/dist/{chunk-NWAUHBYH.js.map → chunk-HGA74X35.js.map} +0 -0
  231. /package/dist/{chunk-AT4WAFJO.js.map → chunk-L2CF2QZW.js.map} +0 -0
  232. /package/dist/{chunk-2ML5QEDH.js.map → chunk-O2FTVZOD.js.map} +0 -0
  233. /package/dist/{chunk-CSBNQJSI.js.map → chunk-PMENIZXI.js.map} +0 -0
  234. /package/dist/{chunk-PFTEG6L7.js.map → chunk-PWOYEUIQ.js.map} +0 -0
  235. /package/dist/{chunk-KXLJT5U5.js.map → chunk-QCP2KV7P.js.map} +0 -0
  236. /package/dist/{chunk-6QDW4CDG.js.map → chunk-QGJYWLF4.js.map} +0 -0
@@ -14,13 +14,14 @@ import {
14
14
  useClaudeMirrorSrc,
15
15
  useCopyToClipboard,
16
16
  useDeferredError,
17
+ useDragAndDropEnabled,
17
18
  useHorizontalScrollbar,
18
19
  useHumanitySignals,
19
20
  useKeyboardCollisionPadding,
20
21
  useLocalStorage,
21
22
  useNotificationPermission,
22
23
  useToast
23
- } from "./chunk-HM2R5MDR.js";
24
+ } from "./chunk-T5HDPHN6.js";
24
25
  import {
25
26
  Pagination
26
27
  } from "./chunk-BBZ6NQL2.js";
@@ -28,7 +29,7 @@ import {
28
29
  Checkbox,
29
30
  FieldWrapper,
30
31
  Input
31
- } from "./chunk-PQETCTJ4.js";
32
+ } from "./chunk-MXOSTJAG.js";
32
33
  import {
33
34
  APPROVAL_STATUS,
34
35
  ActionsMenuDropdown,
@@ -88,7 +89,7 @@ import {
88
89
  useCollapsible,
89
90
  useIsHydrated,
90
91
  useScrollFade
91
- } from "./chunk-DBP7S75Q.js";
92
+ } from "./chunk-3AX3ZEY3.js";
92
93
  import {
93
94
  ToolIcon,
94
95
  createHeadingIdDeduper,
@@ -101,7 +102,7 @@ import {
101
102
  useIsomorphicLayoutEffect,
102
103
  useLgUp,
103
104
  useMdUp
104
- } from "./chunk-W6JA6SFD.js";
105
+ } from "./chunk-JRYS4VMV.js";
105
106
  import {
106
107
  usePathname,
107
108
  useRouter,
@@ -4354,6 +4355,7 @@ var Textarea = forwardRef11(
4354
4355
  className,
4355
4356
  invalid = false,
4356
4357
  label,
4358
+ labelVariant,
4357
4359
  error,
4358
4360
  endIcon,
4359
4361
  endIconAsButton = false,
@@ -4367,7 +4369,7 @@ var Textarea = forwardRef11(
4367
4369
  const reactId = useId3();
4368
4370
  const fieldId = props.id ?? reactId;
4369
4371
  if (!hasAdornment) {
4370
- return /* @__PURE__ */ jsx36(FieldWrapper, { label, error, children: /* @__PURE__ */ jsx36(
4372
+ return /* @__PURE__ */ jsx36(FieldWrapper, { label, labelVariant, error, children: /* @__PURE__ */ jsx36(
4371
4373
  "textarea",
4372
4374
  {
4373
4375
  className: cn(
@@ -4496,7 +4498,7 @@ var Textarea = forwardRef11(
4496
4498
  ]
4497
4499
  }
4498
4500
  );
4499
- return /* @__PURE__ */ jsx36(FieldWrapper, { label, error, children: content });
4501
+ return /* @__PURE__ */ jsx36(FieldWrapper, { label, labelVariant, error, children: content });
4500
4502
  }
4501
4503
  );
4502
4504
  Textarea.displayName = "Textarea";
@@ -16015,6 +16017,9 @@ function ActionIconButton({ onClick, disabled, ariaLabel, children }) {
16015
16017
  );
16016
16018
  }
16017
16019
 
16020
+ // src/components/ui/ticket-status-config-row.tsx
16021
+ import { useId as useId5 } from "react";
16022
+
16018
16023
  // src/components/ui/color-preset-select.tsx
16019
16024
  import { useState as useState40 } from "react";
16020
16025
  import { HexColorPicker } from "react-colorful";
@@ -16284,7 +16289,7 @@ function ColorPickerInput({ value, onChange, disabled, className }) {
16284
16289
  }
16285
16290
 
16286
16291
  // src/components/ui/ticket-status-config-row.tsx
16287
- import { jsx as jsx145, jsxs as jsxs113 } from "react/jsx-runtime";
16292
+ import { Fragment as Fragment25, jsx as jsx145, jsxs as jsxs113 } from "react/jsx-runtime";
16288
16293
  function TicketStatusConfigRow({
16289
16294
  variant,
16290
16295
  statusKey,
@@ -16299,82 +16304,152 @@ function TicketStatusConfigRow({
16299
16304
  deleteDisabled,
16300
16305
  deleteDisabledReason,
16301
16306
  dragHandleProps,
16302
- dragHandleAttributes,
16303
- isDragging
16307
+ isDragging,
16308
+ moveButtons
16304
16309
  }) {
16310
+ const dragAndDropEnabled = useDragAndDropEnabled();
16311
+ const nameInputId = useId5();
16305
16312
  const isSystem = variant === "system";
16306
16313
  const isCustomColor = !isSystem && presetKey === void 0;
16307
16314
  const previewColor = isSystem ? void 0 : color;
16308
16315
  const showColorPicker = !isSystem && onColorChange && color !== void 0;
16309
16316
  const previewVariant = systemTagVariant ?? (isSystem ? void 0 : "primary");
16310
- const colClass = "min-w-0 grow basis-[calc(50%-6px)] md:basis-0";
16317
+ const fieldRowOffset = "mt-[calc(var(--font-line-space-h4-body)+0.25rem)]";
16318
+ const chip = /* @__PURE__ */ jsx145(
16319
+ TicketStatusTag,
16320
+ {
16321
+ status: statusKey,
16322
+ label: name || " ",
16323
+ color: previewColor,
16324
+ variant: previewVariant,
16325
+ showIcon: isSystem,
16326
+ className: "max-w-full"
16327
+ }
16328
+ );
16311
16329
  return /* @__PURE__ */ jsxs113(
16312
16330
  "div",
16313
16331
  {
16314
16332
  className: cn(
16315
- "flex w-full items-start gap-3 rounded-md border border-ods-border bg-ods-card md:gap-[var(--spacing-system-m)]",
16333
+ // Transparent background — only the border outlines the row.
16334
+ "flex w-full items-start gap-3 rounded-md border border-ods-border md:gap-[var(--spacing-system-m)]",
16316
16335
  "p-[var(--spacing-system-m)]",
16317
- isDragging && "opacity-70 shadow-lg"
16336
+ // The dragged row travels over its siblings, so it needs an opaque back.
16337
+ isDragging && "bg-ods-bg opacity-70 shadow-lg"
16318
16338
  ),
16319
16339
  children: [
16320
- /* @__PURE__ */ jsx145("div", { className: "flex h-11 w-8 shrink-0 items-center justify-center text-ods-text-secondary md:h-12", children: isSystem ? /* @__PURE__ */ jsx145(DraggerIcon, { size: 24, "aria-hidden": true, className: "opacity-40" }) : /* @__PURE__ */ jsx145(
16321
- "button",
16322
- {
16323
- type: "button",
16324
- "aria-label": "Drag to reorder",
16325
- className: "flex size-6 cursor-grab items-center justify-center rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ods-focus active:cursor-grabbing",
16326
- ...dragHandleAttributes,
16327
- ...dragHandleProps,
16328
- children: /* @__PURE__ */ jsx145(DraggerIcon, { size: 24 })
16329
- }
16330
- ) }),
16331
- /* @__PURE__ */ jsxs113("div", { className: "flex min-w-0 flex-1 flex-wrap items-start gap-x-3 gap-y-4 md:flex-nowrap md:gap-[var(--spacing-system-m)]", children: [
16332
- /* @__PURE__ */ jsx145("div", { className: cn("flex flex-col gap-[var(--spacing-system-xxs)]", colClass), children: /* @__PURE__ */ jsx145(
16333
- Input,
16334
- {
16335
- value: name,
16336
- onChange: (e) => onNameChange?.(e.target.value),
16337
- disabled: isSystem,
16338
- readOnly: isSystem,
16339
- "aria-label": "Status name",
16340
- maxLength: 50
16341
- }
16342
- ) }),
16343
- showColorPicker ? /* @__PURE__ */ jsx145("div", { className: cn("flex", colClass), children: /* @__PURE__ */ jsx145(ColorPresetSelect, { value: color, presetKey, onChange: onColorChange }) }) : /* @__PURE__ */ jsx145("div", { "aria-hidden": true, className: cn("hidden md:block", colClass) }),
16344
- showColorPicker && isCustomColor ? /* @__PURE__ */ jsx145("div", { className: cn("flex", colClass), children: /* @__PURE__ */ jsx145(ColorPickerInput, { value: color, onChange: (next) => onColorChange({ color: next, preset: void 0 }) }) }) : /* @__PURE__ */ jsx145("div", { "aria-hidden": true, className: cn("hidden md:block", colClass) }),
16345
- /* @__PURE__ */ jsx145("div", { className: cn("flex h-11 items-center justify-start md:h-12 md:justify-end", colClass), children: /* @__PURE__ */ jsx145(
16346
- TicketStatusTag,
16347
- {
16348
- status: statusKey,
16349
- label: name || " ",
16350
- color: previewColor,
16351
- variant: previewVariant,
16352
- showIcon: isSystem,
16353
- className: "max-w-full"
16354
- }
16355
- ) })
16356
- ] }),
16357
- /* @__PURE__ */ jsx145("div", { className: "flex h-11 w-12 shrink-0 items-center justify-center md:h-12", children: isSystem ? /* @__PURE__ */ jsx145(TouchFriendlyTooltip, { content: systemTooltip, children: /* @__PURE__ */ jsx145(
16358
- "button",
16340
+ dragAndDropEnabled && /* @__PURE__ */ jsx145(
16341
+ "div",
16359
16342
  {
16360
- type: "button",
16361
- "aria-label": systemTooltip ?? "System status",
16362
- className: "flex size-6 items-center justify-center text-ods-text-secondary outline-none focus-visible:ring-2 focus-visible:ring-ods-focus",
16363
- children: /* @__PURE__ */ jsx145(InfoCircleIcon, { size: 24 })
16343
+ className: cn(
16344
+ "flex h-11 w-8 shrink-0 items-center justify-center text-ods-text-secondary md:h-12",
16345
+ fieldRowOffset
16346
+ ),
16347
+ children: isSystem ? /* @__PURE__ */ jsx145(DraggerIcon, { size: 24, "aria-hidden": true, className: "opacity-40" }) : /* @__PURE__ */ jsx145(
16348
+ "button",
16349
+ {
16350
+ type: "button",
16351
+ "aria-label": "Drag to reorder",
16352
+ className: "flex size-6 cursor-grab items-center justify-center rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ods-focus active:cursor-grabbing",
16353
+ ...dragHandleProps,
16354
+ children: /* @__PURE__ */ jsx145(DraggerIcon, { size: 24 })
16355
+ }
16356
+ )
16364
16357
  }
16365
- ) }) : /* @__PURE__ */ jsx145(TouchFriendlyTooltip, { content: deleteDisabled ? deleteDisabledReason : void 0, children: /* @__PURE__ */ jsx145("span", { className: "inline-flex", children: /* @__PURE__ */ jsx145(
16366
- Button,
16358
+ ),
16359
+ /* @__PURE__ */ jsxs113(
16360
+ "div",
16367
16361
  {
16368
- type: "button",
16369
- variant: "outline",
16370
- size: "icon",
16371
- "aria-label": "Delete status",
16372
- disabled: deleteDisabled,
16373
- onClick: deleteDisabled ? void 0 : onDelete,
16374
- className: cn("size-11 md:size-12", deleteDisabled && "pointer-events-none"),
16375
- children: /* @__PURE__ */ jsx145(TrashIcon, { className: "text-ods-error" })
16362
+ className: cn(
16363
+ "min-w-0 flex-1 items-start gap-x-3 gap-y-[var(--spacing-system-m)] md:gap-x-[var(--spacing-system-m)]",
16364
+ isSystem ? "flex flex-wrap" : (
16365
+ // Mobile custom rows are a strict two-column grid, per the mock:
16366
+ // fields (name / color / hex, all one width) on the left, the
16367
+ // controls and the chip stacked in the right column. From md up
16368
+ // the same children flow as a wrapping flex row.
16369
+ "grid grid-cols-[minmax(0,1fr)_auto] md:flex md:flex-wrap"
16370
+ )
16371
+ ),
16372
+ children: [
16373
+ /* @__PURE__ */ jsxs113("div", { className: "order-1 flex min-w-0 grow basis-0 flex-col gap-[var(--spacing-system-xxs)]", children: [
16374
+ /* @__PURE__ */ jsx145(Label, { variant: "large", htmlFor: nameInputId, children: "Status Name" }),
16375
+ /* @__PURE__ */ jsx145(
16376
+ Input,
16377
+ {
16378
+ id: nameInputId,
16379
+ value: name,
16380
+ onChange: (e) => onNameChange?.(e.target.value),
16381
+ disabled: isSystem,
16382
+ readOnly: isSystem,
16383
+ maxLength: 50
16384
+ }
16385
+ )
16386
+ ] }),
16387
+ showColorPicker ? /* @__PURE__ */ jsxs113("div", { className: "order-3 flex min-w-0 grow basis-full flex-col gap-[var(--spacing-system-xxs)] md:order-2 md:basis-0", children: [
16388
+ /* @__PURE__ */ jsx145(Label, { variant: "large", children: "Color" }),
16389
+ /* @__PURE__ */ jsx145(ColorPresetSelect, { value: color, presetKey, onChange: onColorChange }),
16390
+ isCustomColor && /* @__PURE__ */ jsx145("div", { className: "mt-[var(--spacing-system-xxs)] flex min-w-0", children: /* @__PURE__ */ jsx145(ColorPickerInput, { value: color, onChange: (next) => onColorChange({ color: next, preset: void 0 }) }) })
16391
+ ] }) : /* @__PURE__ */ jsx145("div", { "aria-hidden": true, className: "hidden min-w-0 grow basis-0 lg:order-2 lg:block" }),
16392
+ /* @__PURE__ */ jsx145("div", { "aria-hidden": true, className: "hidden min-w-0 grow basis-0 lg:order-3 lg:block" }),
16393
+ isSystem ? /* @__PURE__ */ jsx145(
16394
+ "div",
16395
+ {
16396
+ className: cn(
16397
+ "order-2 flex h-11 min-w-0 grow basis-0 items-center justify-end md:h-12 lg:order-4",
16398
+ fieldRowOffset
16399
+ ),
16400
+ children: chip
16401
+ }
16402
+ ) : /* @__PURE__ */ jsxs113(Fragment25, { children: [
16403
+ /* @__PURE__ */ jsx145(
16404
+ "div",
16405
+ {
16406
+ className: cn(
16407
+ "hidden h-12 min-w-0 grow basis-0 items-center justify-end lg:order-4 lg:flex",
16408
+ fieldRowOffset
16409
+ ),
16410
+ children: chip
16411
+ }
16412
+ ),
16413
+ /* @__PURE__ */ jsx145("div", { className: "hidden min-w-0 basis-full items-center justify-end md:order-4 md:flex lg:hidden", children: chip }),
16414
+ /* @__PURE__ */ jsx145("div", { className: cn("order-4 flex h-11 min-w-0 items-center md:hidden", fieldRowOffset), children: chip })
16415
+ ] }),
16416
+ /* @__PURE__ */ jsxs113(
16417
+ "div",
16418
+ {
16419
+ className: cn(
16420
+ "flex h-11 shrink-0 items-center justify-end gap-[var(--spacing-system-s)] md:h-12 lg:order-5",
16421
+ isSystem ? "order-3" : "order-2 md:order-3",
16422
+ fieldRowOffset
16423
+ ),
16424
+ children: [
16425
+ !isSystem && moveButtons,
16426
+ isSystem ? /* @__PURE__ */ jsx145("div", { className: "flex w-11 justify-center md:w-12", children: /* @__PURE__ */ jsx145(TouchFriendlyTooltip, { content: systemTooltip, children: /* @__PURE__ */ jsx145(
16427
+ "button",
16428
+ {
16429
+ type: "button",
16430
+ "aria-label": systemTooltip ?? "System status",
16431
+ className: "flex size-6 items-center justify-center text-ods-text-secondary outline-none focus-visible:ring-2 focus-visible:ring-ods-focus",
16432
+ children: /* @__PURE__ */ jsx145(InfoCircleIcon, { size: 24 })
16433
+ }
16434
+ ) }) }) : /* @__PURE__ */ jsx145(TouchFriendlyTooltip, { content: deleteDisabled ? deleteDisabledReason : void 0, children: /* @__PURE__ */ jsx145("span", { className: "inline-flex", children: /* @__PURE__ */ jsx145(
16435
+ Button,
16436
+ {
16437
+ type: "button",
16438
+ variant: "outline",
16439
+ size: "icon",
16440
+ "aria-label": "Delete status",
16441
+ disabled: deleteDisabled,
16442
+ onClick: deleteDisabled ? void 0 : onDelete,
16443
+ className: cn("size-11 md:size-12", deleteDisabled && "pointer-events-none"),
16444
+ children: /* @__PURE__ */ jsx145(TrashIcon, { className: "text-ods-error" })
16445
+ }
16446
+ ) }) })
16447
+ ]
16448
+ }
16449
+ )
16450
+ ]
16376
16451
  }
16377
- ) }) }) })
16452
+ )
16378
16453
  ]
16379
16454
  }
16380
16455
  );
@@ -16638,7 +16713,7 @@ import { useState as useState43 } from "react";
16638
16713
 
16639
16714
  // src/components/ui/ticket-note-card.tsx
16640
16715
  import { useState as useState42 } from "react";
16641
- import { Fragment as Fragment25, jsx as jsx149, jsxs as jsxs117 } from "react/jsx-runtime";
16716
+ import { Fragment as Fragment26, jsx as jsx149, jsxs as jsxs117 } from "react/jsx-runtime";
16642
16717
  function TicketNoteCard({ note, onEdit, onDelete, className }) {
16643
16718
  const [isEditing, setIsEditing] = useState42(false);
16644
16719
  const [editText, setEditText] = useState42(note.text);
@@ -16696,7 +16771,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
16696
16771
  children: /* @__PURE__ */ jsx149(XmarkIcon, { className: "size-5" })
16697
16772
  }
16698
16773
  )
16699
- ] }) : /* @__PURE__ */ jsxs117(Fragment25, { children: [
16774
+ ] }) : /* @__PURE__ */ jsxs117(Fragment26, { children: [
16700
16775
  /* @__PURE__ */ jsx149("p", { className: "text-ods-text-primary text-h4", children: note.text }),
16701
16776
  /* @__PURE__ */ jsxs117("p", { className: "truncate text-ods-text-secondary text-h6", title: `${note.authorName} \u2022 ${note.createdAt}`, children: [
16702
16777
  note.authorName,
@@ -16786,7 +16861,7 @@ function TicketNotesSection({
16786
16861
  }
16787
16862
 
16788
16863
  // src/components/ui/ticket-info-section.tsx
16789
- import { Fragment as Fragment26, jsx as jsx151, jsxs as jsxs119 } from "react/jsx-runtime";
16864
+ import { Fragment as Fragment27, jsx as jsx151, jsxs as jsxs119 } from "react/jsx-runtime";
16790
16865
  function InfoCell({
16791
16866
  value,
16792
16867
  label,
@@ -16905,7 +16980,7 @@ function TicketInfoSection({
16905
16980
  )
16906
16981
  ] })
16907
16982
  ] }),
16908
- expanded && /* @__PURE__ */ jsxs119(Fragment26, { children: [
16983
+ expanded && /* @__PURE__ */ jsxs119(Fragment27, { children: [
16909
16984
  createdAt && /* @__PURE__ */ jsx151("div", { className: "grid grid-cols-2 items-center gap-4 border-b border-ods-border bg-ods-bg px-4 py-3", children: /* @__PURE__ */ jsx151(InfoCell, { value: createdAt, label: "Created" }) }),
16910
16985
  /* @__PURE__ */ jsxs119("div", { className: "flex flex-col gap-4 border-b border-ods-border bg-ods-bg p-4", children: [
16911
16986
  description && /* @__PURE__ */ jsx151(SimpleMarkdownRenderer, { content: description }),
@@ -17567,7 +17642,7 @@ function SsoProviderButtons({
17567
17642
  }
17568
17643
 
17569
17644
  // src/components/features/auth/complete-account-form.tsx
17570
- import { Fragment as Fragment27, jsx as jsx162, jsxs as jsxs128 } from "react/jsx-runtime";
17645
+ import { Fragment as Fragment28, jsx as jsx162, jsxs as jsxs128 } from "react/jsx-runtime";
17571
17646
  function CompleteAccountForm({
17572
17647
  firstName,
17573
17648
  lastName,
@@ -17616,7 +17691,7 @@ function CompleteAccountForm({
17616
17691
  /* @__PURE__ */ jsx162("h1", { className: "tracking-[-0.64px] text-ods-text-primary text-h2", children: title }),
17617
17692
  /* @__PURE__ */ jsx162("p", { className: "text-ods-text-secondary text-h4", children: subtitle })
17618
17693
  ] }),
17619
- ssoProviders && ssoProviders.length > 0 && /* @__PURE__ */ jsxs128(Fragment27, { children: [
17694
+ ssoProviders && ssoProviders.length > 0 && /* @__PURE__ */ jsxs128(Fragment28, { children: [
17620
17695
  /* @__PURE__ */ jsx162(
17621
17696
  SsoProviderButtons,
17622
17697
  {
@@ -17753,7 +17828,7 @@ function TermsAgreementLabel({ termsUrl = "#", privacyPolicyUrl = "#" }) {
17753
17828
  }
17754
17829
 
17755
17830
  // src/components/features/auth/create-organization-form.tsx
17756
- import { Fragment as Fragment28, jsx as jsx164, jsxs as jsxs130 } from "react/jsx-runtime";
17831
+ import { Fragment as Fragment29, jsx as jsx164, jsxs as jsxs130 } from "react/jsx-runtime";
17757
17832
  function CreateOrganizationForm({
17758
17833
  email,
17759
17834
  organizationName,
@@ -17874,7 +17949,7 @@ function CreateOrganizationForm({
17874
17949
  children: submitLabel
17875
17950
  }
17876
17951
  ),
17877
- hasSso && /* @__PURE__ */ jsxs130(Fragment28, { children: [
17952
+ hasSso && /* @__PURE__ */ jsxs130(Fragment29, { children: [
17878
17953
  /* @__PURE__ */ jsxs130("div", { className: "flex items-center gap-[var(--spacing-system-s)]", children: [
17879
17954
  /* @__PURE__ */ jsx164("div", { className: "h-px flex-1 bg-ods-border" }),
17880
17955
  /* @__PURE__ */ jsx164("span", { className: "text-ods-text-secondary text-h6", children: dividerLabel }),
@@ -21008,7 +21083,7 @@ var ConfidenceBadge = ({
21008
21083
  };
21009
21084
 
21010
21085
  // src/components/features/seo-editor-preview.tsx
21011
- import { Fragment as Fragment29, jsx as jsx194, jsxs as jsxs155 } from "react/jsx-runtime";
21086
+ import { Fragment as Fragment30, jsx as jsx194, jsxs as jsxs155 } from "react/jsx-runtime";
21012
21087
  var SEO_MEDIA_BOX_HEIGHT = "h-[280px]";
21013
21088
  function SEOEditorPreview({
21014
21089
  seoTitle,
@@ -21065,7 +21140,7 @@ function SEOEditorPreview({
21065
21140
  {
21066
21141
  label: "SEO Title",
21067
21142
  error: seoTitleTooLong ? `Too long: search engines may truncate this title (keep it under ${SEO_TITLE_MAX_LENGTH})` : null,
21068
- labelExtras: aiConfidenceSeoTitle !== void 0 ? /* @__PURE__ */ jsxs155(Fragment29, { children: [
21143
+ labelExtras: aiConfidenceSeoTitle !== void 0 ? /* @__PURE__ */ jsxs155(Fragment30, { children: [
21069
21144
  /* @__PURE__ */ jsx194(AIGeneratedBadge, {}),
21070
21145
  /* @__PURE__ */ jsx194(ConfidenceBadge, { confidence: aiConfidenceSeoTitle, showLabel: true, showPercentage: true, size: "sm" })
21071
21146
  ] }) : void 0,
@@ -21104,7 +21179,7 @@ function SEOEditorPreview({
21104
21179
  Field,
21105
21180
  {
21106
21181
  label: "SEO Keywords",
21107
- labelExtras: aiConfidenceSeoKeywords !== void 0 ? /* @__PURE__ */ jsxs155(Fragment29, { children: [
21182
+ labelExtras: aiConfidenceSeoKeywords !== void 0 ? /* @__PURE__ */ jsxs155(Fragment30, { children: [
21108
21183
  /* @__PURE__ */ jsx194(AIGeneratedBadge, {}),
21109
21184
  /* @__PURE__ */ jsx194(
21110
21185
  ConfidenceBadge,
@@ -21137,7 +21212,7 @@ function SEOEditorPreview({
21137
21212
  {
21138
21213
  label: "SEO Description",
21139
21214
  error: seoDescriptionTooLong ? `Too long: search engines may truncate this description (keep it under ${SEO_DESCRIPTION_MAX_LENGTH})` : null,
21140
- labelExtras: aiConfidenceSeoDescription !== void 0 ? /* @__PURE__ */ jsxs155(Fragment29, { children: [
21215
+ labelExtras: aiConfidenceSeoDescription !== void 0 ? /* @__PURE__ */ jsxs155(Fragment30, { children: [
21141
21216
  /* @__PURE__ */ jsx194(AIGeneratedBadge, {}),
21142
21217
  /* @__PURE__ */ jsx194(
21143
21218
  ConfidenceBadge,
@@ -21228,7 +21303,7 @@ function SEOEditorPreview({
21228
21303
  "flex cursor-pointer flex-col items-center justify-center rounded-lg border-2 border-dashed border-ods-border bg-ods-bg-hover transition-colors hover:border-ods-accent"
21229
21304
  ),
21230
21305
  onClick: () => onOgImageUpload && fileInputRef?.click(),
21231
- children: isUploading ? /* @__PURE__ */ jsx194(Loader28, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs155(Fragment29, { children: [
21306
+ children: isUploading ? /* @__PURE__ */ jsx194(Loader28, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs155(Fragment30, { children: [
21232
21307
  /* @__PURE__ */ jsx194(Upload4, { className: "mb-2 h-8 w-8 text-ods-text-secondary" }),
21233
21308
  /* @__PURE__ */ jsx194("span", { className: "text-ods-text-secondary text-h6", children: onOgImageUpload ? "Click to upload OG image" : "No image" })
21234
21309
  ] })
@@ -21741,7 +21816,7 @@ function VideoBitesDisplay({
21741
21816
  // src/components/features/walkthrough-video.tsx
21742
21817
  import * as DialogPrimitive2 from "@radix-ui/react-dialog";
21743
21818
  import { useCallback as useCallback20, useEffect as useEffect29, useLayoutEffect as useLayoutEffect2, useMemo as useMemo19, useRef as useRef32, useState as useState58 } from "react";
21744
- import { Fragment as Fragment30, jsx as jsx201, jsxs as jsxs160 } from "react/jsx-runtime";
21819
+ import { Fragment as Fragment31, jsx as jsx201, jsxs as jsxs160 } from "react/jsx-runtime";
21745
21820
  var isAtEnd = (duration, time) => duration > 0 && duration - time < 1;
21746
21821
  function theaterSeedFromLive(live, fallbackTime, fallbackMuted) {
21747
21822
  const time = live?.getCurrentTime() ?? 0;
@@ -22291,7 +22366,7 @@ function WalkthroughVideo({
22291
22366
  ]
22292
22367
  }
22293
22368
  );
22294
- return /* @__PURE__ */ jsxs160(Fragment30, { children: [
22369
+ return /* @__PURE__ */ jsxs160(Fragment31, { children: [
22295
22370
  showCard && (inline ? (
22296
22371
  // No wrapper: a positioning / z-index / safe-area shell around an
22297
22372
  // in-flow block is exactly what stops it sizing to its container.
@@ -23784,7 +23859,7 @@ function ViewToggle({
23784
23859
  // src/components/features/policy-configuration-panel.tsx
23785
23860
  import { ChevronDown as ChevronDown8, Shield } from "lucide-react";
23786
23861
  import { useState as useState61 } from "react";
23787
- import { Fragment as Fragment31, jsx as jsx220, jsxs as jsxs175 } from "react/jsx-runtime";
23862
+ import { Fragment as Fragment32, jsx as jsx220, jsxs as jsxs175 } from "react/jsx-runtime";
23788
23863
  var approvalLevelLabels = {
23789
23864
  ALLOW: "Allow",
23790
23865
  ASK_USER: "Ask User",
@@ -23850,7 +23925,7 @@ var PolicyRow = ({ policy, categoryId, editMode, onPermissionChange }) => {
23850
23925
  var CategorySection = ({ category, editMode, isExpanded, bulkLevel, onToggle, onBulkLevelChange, onPolicyPermissionChange }) => {
23851
23926
  const { innerRef, containerStyle } = useCollapsible({ expanded: isExpanded, durationMs: 300 });
23852
23927
  const handleBulkChange = (level) => onBulkLevelChange(category.id, level);
23853
- return /* @__PURE__ */ jsxs175(Fragment31, { children: [
23928
+ return /* @__PURE__ */ jsxs175(Fragment32, { children: [
23854
23929
  /* @__PURE__ */ jsxs175(
23855
23930
  "div",
23856
23931
  {
@@ -23991,7 +24066,7 @@ PolicyConfigurationPanel.displayName = "PolicyConfigurationPanel";
23991
24066
  // src/components/features/waitlist-form.tsx
23992
24067
  import { getCountries as getCountries2 } from "libphonenumber-js";
23993
24068
  import { useEffect as useEffect30, useState as useState62 } from "react";
23994
- import { Fragment as Fragment32, jsx as jsx221, jsxs as jsxs176 } from "react/jsx-runtime";
24069
+ import { Fragment as Fragment33, jsx as jsx221, jsxs as jsxs176 } from "react/jsx-runtime";
23995
24070
  function WaitlistForm({
23996
24071
  id = "waitlist-form",
23997
24072
  className,
@@ -24152,7 +24227,7 @@ function WaitlistForm({
24152
24227
  error: showConsentError ? "Please agree to SMS notifications to continue." : void 0,
24153
24228
  disabled: isSubmitting,
24154
24229
  label: smsCheckboxLabel,
24155
- description: /* @__PURE__ */ jsxs176(Fragment32, { children: [
24230
+ description: /* @__PURE__ */ jsxs176(Fragment33, { children: [
24156
24231
  consentText,
24157
24232
  " View our ",
24158
24233
  /* @__PURE__ */ jsx221(
@@ -25050,7 +25125,7 @@ function NotificationTile({
25050
25125
  }
25051
25126
 
25052
25127
  // src/components/features/notifications/notification-drawer.tsx
25053
- import { Fragment as Fragment33, jsx as jsx225, jsxs as jsxs179 } from "react/jsx-runtime";
25128
+ import { Fragment as Fragment34, jsx as jsx225, jsxs as jsxs179 } from "react/jsx-runtime";
25054
25129
  function NotificationDrawer({
25055
25130
  className,
25056
25131
  liveDurationMs,
@@ -25083,7 +25158,7 @@ function NotificationDrawer({
25083
25158
  } = ctx;
25084
25159
  const renderTile = renderTileProp ?? ctxRenderTile;
25085
25160
  const unreadNotifications = notifications.filter((n) => !n.read);
25086
- const content = /* @__PURE__ */ jsxs179(Fragment33, { children: [
25161
+ const content = /* @__PURE__ */ jsxs179(Fragment34, { children: [
25087
25162
  /* @__PURE__ */ jsx225("div", { className: "px-[var(--spacing-system-m)] pt-[var(--spacing-system-m)]", children: /* @__PURE__ */ jsx225(
25088
25163
  DrawerTitle,
25089
25164
  {
@@ -25195,7 +25270,7 @@ function DrawerScrollList({
25195
25270
  {
25196
25271
  ref: scrollRef,
25197
25272
  className: "flex flex-1 flex-col gap-[var(--spacing-system-xs)] overflow-y-auto px-[var(--spacing-system-m)]",
25198
- children: isEmpty && !isLoadingMore ? /* @__PURE__ */ jsx225(EmptyState, {}) : /* @__PURE__ */ jsxs179(Fragment33, { children: [
25273
+ children: isEmpty && !isLoadingMore ? /* @__PURE__ */ jsx225(EmptyState, {}) : /* @__PURE__ */ jsxs179(Fragment34, { children: [
25199
25274
  unreadNotifications.map((n) => {
25200
25275
  const custom = renderTile?.(n, { onComplete, onSettle, liveDurationMs });
25201
25276
  if (custom) return /* @__PURE__ */ jsx225("div", { children: custom }, n.id);
@@ -25217,7 +25292,7 @@ function DrawerScrollList({
25217
25292
  );
25218
25293
  }
25219
25294
  function DrawerLoadingTiles() {
25220
- return /* @__PURE__ */ jsxs179(Fragment33, { children: [
25295
+ return /* @__PURE__ */ jsxs179(Fragment34, { children: [
25221
25296
  /* @__PURE__ */ jsx225(
25222
25297
  "div",
25223
25298
  {
@@ -25447,7 +25522,7 @@ function approvalMetaToBatchData(approval) {
25447
25522
  }
25448
25523
 
25449
25524
  // src/components/features/notifications/approval-request-notification-tile.tsx
25450
- import { Fragment as Fragment34, jsx as jsx227, jsxs as jsxs180 } from "react/jsx-runtime";
25525
+ import { Fragment as Fragment35, jsx as jsx227, jsxs as jsxs180 } from "react/jsx-runtime";
25451
25526
  function ApprovalRequestNotificationTile({
25452
25527
  notification,
25453
25528
  onApprove,
@@ -25497,7 +25572,7 @@ function ApprovalRequestNotificationTile({
25497
25572
  className,
25498
25573
  paused: pinned || processing,
25499
25574
  actions: /* @__PURE__ */ jsxs180("div", { className: "flex w-full items-center gap-[var(--spacing-system-xs)]", children: [
25500
- status === "pending" ? /* @__PURE__ */ jsxs180(Fragment34, { children: [
25575
+ status === "pending" ? /* @__PURE__ */ jsxs180(Fragment35, { children: [
25501
25576
  /* @__PURE__ */ jsx227(
25502
25577
  Button,
25503
25578
  {
@@ -25982,7 +26057,7 @@ function HeaderButton({
25982
26057
  }
25983
26058
 
25984
26059
  // src/components/features/time-tracker/time-tracker-header-button.tsx
25985
- import { Fragment as Fragment35, jsx as jsx232, jsxs as jsxs183 } from "react/jsx-runtime";
26060
+ import { Fragment as Fragment36, jsx as jsx232, jsxs as jsxs183 } from "react/jsx-runtime";
25986
26061
  function TimeTrackerHeaderButton({ className, disabled }) {
25987
26062
  const ctx = useOptionalTimeTracker();
25988
26063
  const elapsedLabel = useTrackerClock({
@@ -26027,7 +26102,7 @@ function TimeTrackerHeaderButton({ className, disabled }) {
26027
26102
  isActive && "md:w-auto md:min-w-[144px] md:justify-center md:gap-[var(--spacing-system-xsf)] md:px-[var(--spacing-system-sf)]",
26028
26103
  className
26029
26104
  ),
26030
- icon: /* @__PURE__ */ jsxs183(Fragment35, { children: [
26105
+ icon: /* @__PURE__ */ jsxs183(Fragment36, { children: [
26031
26106
  /* @__PURE__ */ jsx232(
26032
26107
  ClockHistoryIcon,
26033
26108
  {
@@ -26082,7 +26157,7 @@ function TimeTrackerHeaderButton({ className, disabled }) {
26082
26157
  import { combine as combine3 } from "@atlaskit/pragmatic-drag-and-drop/combine";
26083
26158
  import { monitorForElements } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
26084
26159
  import { preventUnhandled } from "@atlaskit/pragmatic-drag-and-drop/utils/prevent-unhandled";
26085
- import { Fragment as Fragment38, useCallback as useCallback27, useEffect as useEffect41, useMemo as useMemo23, useRef as useRef41, useState as useState76 } from "react";
26160
+ import { Fragment as Fragment39, useCallback as useCallback27, useEffect as useEffect41, useMemo as useMemo23, useRef as useRef41, useState as useState76 } from "react";
26086
26161
  import { createPortal } from "react-dom";
26087
26162
 
26088
26163
  // src/utils/auto-scroll-ancestors.ts
@@ -26468,7 +26543,7 @@ function hasMoveSettled(columns, move) {
26468
26543
  }
26469
26544
 
26470
26545
  // src/components/features/board/ticket-card.tsx
26471
- import { Fragment as Fragment36, jsx as jsx235, jsxs as jsxs186 } from "react/jsx-runtime";
26546
+ import { Fragment as Fragment37, jsx as jsx235, jsxs as jsxs186 } from "react/jsx-runtime";
26472
26547
  var PRIORITY_COLOR_CLASS = {
26473
26548
  low: "text-ods-text-secondary",
26474
26549
  medium: "text-ods-info",
@@ -26529,7 +26604,7 @@ function TicketCardBody({ ticket, columnColor, renderAssignSlot, onApprove, onRe
26529
26604
  ] }) : null;
26530
26605
  const timestampLabel = ticket.createdAt ? formatTicketRelativeTime(ticket.createdAt) : null;
26531
26606
  const tooltipLabel = ticket.createdAt ? formatTicketFullTimestamp(ticket.createdAt) : null;
26532
- return /* @__PURE__ */ jsxs186(Fragment36, { children: [
26607
+ return /* @__PURE__ */ jsxs186(Fragment37, { children: [
26533
26608
  /* @__PURE__ */ jsxs186("div", { className: "flex items-start gap-[var(--spacing-system-sf)]", children: [
26534
26609
  /* @__PURE__ */ jsxs186("div", { className: "flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-zero)]", title: ticket.title, children: [
26535
26610
  /* @__PURE__ */ jsx235("p", { className: "truncate text-ods-text-primary text-h3", children: ticket.title }),
@@ -26820,7 +26895,7 @@ var TicketCardSkeleton = forwardRef31(
26820
26895
  TicketCardSkeleton.displayName = "TicketCardSkeleton";
26821
26896
 
26822
26897
  // src/components/features/board/board-column.tsx
26823
- import { Fragment as Fragment37, jsx as jsx237, jsxs as jsxs188 } from "react/jsx-runtime";
26898
+ import { Fragment as Fragment38, jsx as jsx237, jsxs as jsxs188 } from "react/jsx-runtime";
26824
26899
  var BoardColumn = memo6(function BoardColumnImpl({
26825
26900
  column,
26826
26901
  collapsed = false,
@@ -26895,7 +26970,7 @@ var BoardColumn = memo6(function BoardColumnImpl({
26895
26970
  onArchive: !collapsed && column.archivable && onArchive ? () => onArchive(column.id) : void 0
26896
26971
  }
26897
26972
  ),
26898
- !collapsed && /* @__PURE__ */ jsxs188(Fragment37, { children: [
26973
+ !collapsed && /* @__PURE__ */ jsxs188(Fragment38, { children: [
26899
26974
  /* @__PURE__ */ jsx237("div", { "aria-hidden": true, className: "-mx-[var(--spacing-system-sf)] h-px shrink-0 bg-ods-border" }),
26900
26975
  /* @__PURE__ */ jsx237(
26901
26976
  ColumnBody,
@@ -26988,7 +27063,7 @@ function ColumnBody({
26988
27063
  );
26989
27064
  }
26990
27065
  function SkeletonStack({ count = 4 }) {
26991
- return /* @__PURE__ */ jsx237(Fragment37, { children: Array.from({ length: count }, (_, i) => /* @__PURE__ */ jsx237(TicketCardSkeleton, {}, `skeleton-${i}`)) });
27066
+ return /* @__PURE__ */ jsx237(Fragment38, { children: Array.from({ length: count }, (_, i) => /* @__PURE__ */ jsx237(TicketCardSkeleton, {}, `skeleton-${i}`)) });
26992
27067
  }
26993
27068
  function EmptyState2({ columnId }) {
26994
27069
  const aim = useDropAim();
@@ -27085,7 +27160,12 @@ function Board({
27085
27160
  const previewRef = useRef41(null);
27086
27161
  const [reportedMove, setPendingMove] = useState76(null);
27087
27162
  const pendingMove = reportedMove && !hasMoveSettled(columns, reportedMove) ? reportedMove : null;
27088
- const view = useMemo23(() => pendingMove ? applyPendingMove(columns, pendingMove) : columns, [columns, pendingMove]);
27163
+ const dragAndDropEnabled = useDragAndDropEnabled();
27164
+ const view = useMemo23(() => {
27165
+ const base = pendingMove ? applyPendingMove(columns, pendingMove) : columns;
27166
+ if (dragAndDropEnabled) return base;
27167
+ return base.map((column) => ({ ...column, dragDisabled: true, dropDisabled: true }));
27168
+ }, [columns, pendingMove, dragAndDropEnabled]);
27089
27169
  useEffect41(() => {
27090
27170
  columnsRef.current = view;
27091
27171
  onChangeRef.current = onChange;
@@ -27330,7 +27410,7 @@ function Board({
27330
27410
  const joinLeft = !!(column.system && prev?.system);
27331
27411
  const joinRight = !!(column.system && next?.system);
27332
27412
  const showGap = i > 0 && !joinLeft;
27333
- return /* @__PURE__ */ jsxs189(Fragment38, { children: [
27413
+ return /* @__PURE__ */ jsxs189(Fragment39, { children: [
27334
27414
  showGap && /* @__PURE__ */ jsx238("div", { "aria-hidden": true, className: "w-[var(--spacing-system-mf)] shrink-0" }),
27335
27415
  /* @__PURE__ */ jsx238(
27336
27416
  BoardColumn,
@@ -27477,7 +27557,7 @@ import {
27477
27557
  useCallback as useCallback28,
27478
27558
  useContext as useContext12,
27479
27559
  useEffect as useEffect42,
27480
- useId as useId5,
27560
+ useId as useId6,
27481
27561
  useMemo as useMemo24,
27482
27562
  useRef as useRef42,
27483
27563
  useState as useState77
@@ -27495,7 +27575,8 @@ function useSortableListContext() {
27495
27575
  }
27496
27576
  function SortableList({ onReorder, getItemLabel, disabled = false, className, children }) {
27497
27577
  const listRef = useRef42(null);
27498
- const dragType = useId5();
27578
+ const dragAndDropEnabled = useDragAndDropEnabled();
27579
+ const dragType = useId6();
27499
27580
  const [announcement, setAnnouncement] = useState77("");
27500
27581
  const onReorderRef = useRef42(onReorder);
27501
27582
  const getItemLabelRef = useRef42(getItemLabel);
@@ -27521,7 +27602,7 @@ function SortableList({ onReorder, getItemLabel, disabled = false, className, ch
27521
27602
  );
27522
27603
  useEffect42(() => {
27523
27604
  const list = listRef.current;
27524
- if (!list) return void 0;
27605
+ if (!list || disabled || !dragAndDropEnabled) return void 0;
27525
27606
  let drag = null;
27526
27607
  return combine4(
27527
27608
  // Dragging towards the edge of the screen — or past it — scrolls whatever
@@ -27585,7 +27666,7 @@ function SortableList({ onReorder, getItemLabel, disabled = false, className, ch
27585
27666
  }
27586
27667
  })
27587
27668
  );
27588
- }, [dragType, readItems, reorder]);
27669
+ }, [dragType, disabled, dragAndDropEnabled, readItems, reorder]);
27589
27670
  useIsomorphicLayoutEffect(() => {
27590
27671
  const from = flipFrom.current;
27591
27672
  flipFrom.current = null;
@@ -27617,8 +27698,8 @@ function SortableList({ onReorder, getItemLabel, disabled = false, className, ch
27617
27698
  []
27618
27699
  );
27619
27700
  const context = useMemo24(
27620
- () => ({ dragType, disabled, reorder, readItems }),
27621
- [dragType, disabled, reorder, readItems]
27701
+ () => ({ dragType, disabled, dragAndDropEnabled, reorder, readItems }),
27702
+ [dragType, disabled, dragAndDropEnabled, reorder, readItems]
27622
27703
  );
27623
27704
  return /* @__PURE__ */ jsx239(SortableListContext.Provider, { value: context, children: /* @__PURE__ */ jsxs190("div", { ref: listRef, className, children: [
27624
27705
  children,
@@ -27626,13 +27707,63 @@ function SortableList({ onReorder, getItemLabel, disabled = false, className, ch
27626
27707
  ] }) });
27627
27708
  }
27628
27709
 
27710
+ // src/components/features/sortable-list/sortable-move-buttons.tsx
27711
+ import { useRef as useRef43 } from "react";
27712
+ import { jsx as jsx240, jsxs as jsxs191 } from "react/jsx-runtime";
27713
+ function SortableMoveButtons({ index, count, label, className }) {
27714
+ const { disabled, reorder } = useSortableListContext();
27715
+ const upRef = useRef43(null);
27716
+ const downRef = useRef43(null);
27717
+ const move = (step) => {
27718
+ const to = index + step;
27719
+ if (to < 0 || to >= count) return;
27720
+ reorder(index, to);
27721
+ requestAnimationFrame(() => {
27722
+ if (step === -1 && to === 0) downRef.current?.focus();
27723
+ if (step === 1 && to === count - 1) upRef.current?.focus();
27724
+ });
27725
+ };
27726
+ const subject = label ?? "item";
27727
+ return /* @__PURE__ */ jsxs191("div", { className: cn("inline-flex shrink-0", className), children: [
27728
+ /* @__PURE__ */ jsx240(
27729
+ Button,
27730
+ {
27731
+ ref: upRef,
27732
+ type: "button",
27733
+ variant: "outline",
27734
+ size: "icon",
27735
+ "aria-label": `Move ${subject} up`,
27736
+ disabled: disabled || index <= 0,
27737
+ onClick: () => move(-1),
27738
+ className: "rounded-r-none border-r-0",
27739
+ children: /* @__PURE__ */ jsx240(Arrow01UpIcon, {})
27740
+ }
27741
+ ),
27742
+ /* @__PURE__ */ jsx240(
27743
+ Button,
27744
+ {
27745
+ ref: downRef,
27746
+ type: "button",
27747
+ variant: "outline",
27748
+ size: "icon",
27749
+ "aria-label": `Move ${subject} down`,
27750
+ disabled: disabled || index >= count - 1,
27751
+ onClick: () => move(1),
27752
+ className: "rounded-l-none",
27753
+ children: /* @__PURE__ */ jsx240(Arrow01DownIcon, {})
27754
+ }
27755
+ )
27756
+ ] });
27757
+ }
27758
+
27629
27759
  // src/components/features/sortable-list/use-sortable-item.ts
27630
27760
  import { combine as combine5 } from "@atlaskit/pragmatic-drag-and-drop/combine";
27631
27761
  import { draggable as draggable2 } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
27632
27762
  import { disableNativeDragPreview } from "@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview";
27633
27763
  import { useCallback as useCallback29, useEffect as useEffect43, useState as useState78 } from "react";
27634
27764
  function useSortableItem() {
27635
- const { dragType, disabled, reorder, readItems } = useSortableListContext();
27765
+ const { dragType, disabled, dragAndDropEnabled, reorder, readItems } = useSortableListContext();
27766
+ const inert = disabled || !dragAndDropEnabled;
27636
27767
  const [item, setItem] = useState78(null);
27637
27768
  const [handle, setHandle] = useState78(null);
27638
27769
  const [isDragging, setIsDragging] = useState78(false);
@@ -27641,7 +27772,7 @@ function useSortableItem() {
27641
27772
  setItem(node);
27642
27773
  }, []);
27643
27774
  useEffect43(() => {
27644
- if (!item || !handle || disabled) return void 0;
27775
+ if (!item || !handle || inert) return void 0;
27645
27776
  return combine5(
27646
27777
  // The drag has to start as a "move", or its first frame is drawn with the
27647
27778
  // copy cursor — see `drag-effect.ts`.
@@ -27656,11 +27787,11 @@ function useSortableItem() {
27656
27787
  onDrop: () => setIsDragging(false)
27657
27788
  })
27658
27789
  );
27659
- }, [item, handle, disabled, dragType]);
27790
+ }, [item, handle, inert, dragType]);
27660
27791
  const onKeyDown = useCallback29(
27661
27792
  (event) => {
27662
27793
  const step = event.key === "ArrowUp" ? -1 : event.key === "ArrowDown" ? 1 : 0;
27663
- if (!step || disabled) return;
27794
+ if (!step || inert) return;
27664
27795
  const items = readItems();
27665
27796
  const from = items.indexOf(event.currentTarget.closest(`[${SORTABLE_ITEM_ATTRIBUTE}]`));
27666
27797
  const to = from + step;
@@ -27669,65 +27800,49 @@ function useSortableItem() {
27669
27800
  reorder(from, to);
27670
27801
  requestAnimationFrame(() => handle?.focus());
27671
27802
  },
27672
- [disabled, readItems, reorder, handle]
27803
+ [inert, readItems, reorder, handle]
27673
27804
  );
27674
- return { itemRef, dragHandleProps: { ref: setHandle, onKeyDown }, isDragging };
27805
+ return { itemRef, dragHandleProps: { ref: setHandle, onKeyDown }, isDragging, dragAndDropEnabled };
27675
27806
  }
27676
27807
 
27677
27808
  // src/components/features/ticket-status-config-list/ticket-status-config-list.tsx
27678
- import {
27679
- DndContext,
27680
- KeyboardSensor,
27681
- PointerSensor,
27682
- closestCenter,
27683
- useSensor,
27684
- useSensors
27685
- } from "@dnd-kit/core";
27686
- import {
27687
- SortableContext,
27688
- sortableKeyboardCoordinates,
27689
- useSortable,
27690
- verticalListSortingStrategy
27691
- } from "@dnd-kit/sortable";
27692
- import { CSS } from "@dnd-kit/utilities";
27693
- import { useMemo as useMemo25 } from "react";
27694
- import { jsx as jsx240 } from "react/jsx-runtime";
27809
+ import { jsx as jsx241 } from "react/jsx-runtime";
27695
27810
  function TicketStatusConfigList({
27696
27811
  items,
27697
27812
  onReorder,
27698
27813
  renderRow,
27814
+ getItemLabel,
27699
27815
  className
27700
27816
  }) {
27701
- const sensors = useSensors(
27702
- useSensor(PointerSensor, { activationConstraint: { distance: 4 } }),
27703
- useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })
27817
+ return /* @__PURE__ */ jsx241(
27818
+ SortableList,
27819
+ {
27820
+ onReorder,
27821
+ getItemLabel,
27822
+ className: cn("flex w-full flex-col gap-[var(--spacing-system-xs)]", className),
27823
+ children: items.map((item, index) => /* @__PURE__ */ jsx241(SortableRow, { index, count: items.length, label: getItemLabel?.(index), children: (args) => renderRow(item, args) }, item.id))
27824
+ }
27825
+ );
27826
+ }
27827
+ function SortableRow({
27828
+ index,
27829
+ count,
27830
+ label,
27831
+ children
27832
+ }) {
27833
+ const { itemRef, dragHandleProps, isDragging, dragAndDropEnabled } = useSortableItem();
27834
+ return /* @__PURE__ */ jsx241(
27835
+ "div",
27836
+ {
27837
+ ref: itemRef,
27838
+ className: isDragging ? "relative z-10" : void 0,
27839
+ children: children({
27840
+ dragHandleProps,
27841
+ isDragging,
27842
+ moveButtons: dragAndDropEnabled ? null : /* @__PURE__ */ jsx241(SortableMoveButtons, { index, count, label })
27843
+ })
27844
+ }
27704
27845
  );
27705
- const handleDragEnd = (event) => {
27706
- const { active, over } = event;
27707
- if (!over || active.id === over.id) return;
27708
- const oldIndex = items.findIndex((i) => i.id === active.id);
27709
- const newIndex = items.findIndex((i) => i.id === over.id);
27710
- if (oldIndex === -1 || newIndex === -1) return;
27711
- onReorder(oldIndex, newIndex);
27712
- };
27713
- const sortableIds = useMemo25(() => items.map((i) => i.id), [items]);
27714
- return /* @__PURE__ */ jsx240(DndContext, { sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: /* @__PURE__ */ jsx240(SortableContext, { items: sortableIds, strategy: verticalListSortingStrategy, children: /* @__PURE__ */ jsx240("div", { className: cn("flex w-full flex-col gap-[var(--spacing-system-xs)]", className), children: items.map((item) => /* @__PURE__ */ jsx240(SortableRow, { id: item.id, children: (args) => renderRow(item, args) }, item.id)) }) }) });
27715
- }
27716
- function SortableRow({ id, children }) {
27717
- const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ id });
27718
- const style = {
27719
- transform: CSS.Transform.toString(transform),
27720
- transition,
27721
- // Raise the actively dragged row above its siblings — without this the
27722
- // stacking follows DOM order, so a row dragged DOWN slides UNDER the rows
27723
- // below it while a row dragged up correctly renders on top.
27724
- zIndex: isDragging ? 1 : void 0
27725
- };
27726
- return /* @__PURE__ */ jsx240("div", { ref: setNodeRef, style, children: children({
27727
- dragHandleProps: listeners,
27728
- dragHandleAttributes: attributes,
27729
- isDragging
27730
- }) });
27731
27846
  }
27732
27847
 
27733
27848
  export {
@@ -28217,6 +28332,7 @@ export {
28217
28332
  groupTicketsByStatus,
28218
28333
  SLOT_STICKINESS,
28219
28334
  SortableList,
28335
+ SortableMoveButtons,
28220
28336
  useSortableItem,
28221
28337
  TicketStatusConfigList,
28222
28338
  TableHeader,
@@ -28294,4 +28410,4 @@ export {
28294
28410
  ReopenTicketRequestModal,
28295
28411
  FilterPillRow
28296
28412
  };
28297
- //# sourceMappingURL=chunk-L66XBQM6.js.map
28413
+ //# sourceMappingURL=chunk-CP5EYMNL.js.map