@ciridae/ui 1.0.2 → 1.0.4

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 (209) hide show
  1. package/dist/app/auth.d.ts +10 -0
  2. package/dist/app/auth.js +60 -0
  3. package/dist/app/error-boundary.d.ts +18 -0
  4. package/dist/app/error-boundary.js +45 -0
  5. package/dist/app/feedback.d.ts +12 -0
  6. package/dist/app/feedback.js +128 -0
  7. package/dist/app/index.d.ts +8 -0
  8. package/dist/app/index.js +8 -0
  9. package/dist/app/request-errors.d.ts +63 -0
  10. package/dist/app/request-errors.js +172 -0
  11. package/dist/app/sentry.d.ts +18 -0
  12. package/dist/app/sentry.js +52 -0
  13. package/dist/app/telemetry.d.ts +7 -0
  14. package/dist/app/telemetry.js +28 -0
  15. package/dist/app/trail.d.ts +9 -0
  16. package/dist/app/trail.js +18 -0
  17. package/dist/chat/chat-query-keys.d.ts +3 -3
  18. package/dist/chat/contract.d.ts +15 -15
  19. package/dist/chat/conversation-items-query-options.d.ts +114 -114
  20. package/dist/chat/conversation-source.d.ts +89 -0
  21. package/dist/chat/conversation-source.js +1 -0
  22. package/dist/chat/describe-tool-call.d.ts +3 -3
  23. package/dist/chat/describe-tool-call.js +3 -3
  24. package/dist/chat/message-text.d.ts +1 -1
  25. package/dist/chat/message-text.js +116 -48
  26. package/dist/chat/use-conversation-list.d.ts +6 -6
  27. package/dist/ciridae.css +16 -4
  28. package/dist/components/activity-feed.d.ts +3 -2
  29. package/dist/components/activity-feed.js +1 -0
  30. package/dist/components/agent-work.d.ts +3 -3
  31. package/dist/components/app-frame.d.ts +91 -0
  32. package/dist/components/app-frame.js +134 -0
  33. package/dist/components/app-navigation.d.ts +30 -3
  34. package/dist/components/app-navigation.js +105 -14
  35. package/dist/components/badge.d.ts +30 -5
  36. package/dist/components/badge.js +134 -15
  37. package/dist/components/brand-icons.d.ts +3 -3
  38. package/dist/components/bulk-action-bar.d.ts +1 -1
  39. package/dist/components/bulk-action-bar.js +3 -3
  40. package/dist/components/button.d.ts +12 -5
  41. package/dist/components/button.js +77 -44
  42. package/dist/components/calendar.d.ts +1 -1
  43. package/dist/components/calendar.js +44 -17
  44. package/dist/components/centered-page.d.ts +1 -1
  45. package/dist/components/centered-page.js +2 -2
  46. package/dist/components/chart.d.ts +22 -2
  47. package/dist/components/chart.js +251 -51
  48. package/dist/components/chat-client-source.d.ts +16 -0
  49. package/dist/components/chat-client-source.js +297 -0
  50. package/dist/components/chat-page.d.ts +9 -8
  51. package/dist/components/chat-page.js +7 -11
  52. package/dist/components/chat-sheet-controller.d.ts +11 -14
  53. package/dist/components/chat-sheet-controller.js +3 -3
  54. package/dist/components/chat-sheet.d.ts +18 -11
  55. package/dist/components/chat-sheet.js +188 -289
  56. package/dist/components/chat.d.ts +109 -19
  57. package/dist/components/chat.js +520 -124
  58. package/dist/components/checkbox-item.d.ts +6 -3
  59. package/dist/components/checkbox-item.js +9 -5
  60. package/dist/components/checkbox-list.d.ts +1 -1
  61. package/dist/components/chip.d.ts +6 -1
  62. package/dist/components/chip.js +27 -1
  63. package/dist/components/collapsible.d.ts +1 -1
  64. package/dist/components/color-theme.d.ts +1 -1
  65. package/dist/components/column-settings.d.ts +1 -1
  66. package/dist/components/column-settings.js +1 -1
  67. package/dist/components/command-menu.d.ts +5 -1
  68. package/dist/components/command-menu.js +98 -32
  69. package/dist/components/command-palette.d.ts +7 -3
  70. package/dist/components/command-palette.js +20 -11
  71. package/dist/components/copyable-id.d.ts +22 -5
  72. package/dist/components/copyable-id.js +46 -6
  73. package/dist/components/data-display.d.ts +39 -8
  74. package/dist/components/data-display.js +138 -19
  75. package/dist/components/data-grid.d.ts +23 -11
  76. package/dist/components/data-grid.js +61 -26
  77. package/dist/components/date-range-picker.d.ts +1 -1
  78. package/dist/components/date-range-picker.js +9 -20
  79. package/dist/components/date-time.d.ts +1 -1
  80. package/dist/components/dialog-height-context.d.ts +1 -1
  81. package/dist/components/document-viewer.d.ts +2 -2
  82. package/dist/components/drawer.d.ts +11 -6
  83. package/dist/components/drawer.js +91 -54
  84. package/dist/components/dropzone.d.ts +4 -4
  85. package/dist/components/editable-field.d.ts +12 -3
  86. package/dist/components/editable-field.js +57 -27
  87. package/dist/components/email-input.d.ts +1 -1
  88. package/dist/components/email-input.js +6 -5
  89. package/dist/components/environment-frame.d.ts +2 -2
  90. package/dist/components/environment-frame.js +37 -6
  91. package/dist/components/expandable-text.d.ts +1 -1
  92. package/dist/components/feedback-screenshot.d.ts +1 -1
  93. package/dist/components/feedback-sheet.d.ts +18 -3
  94. package/dist/components/feedback-sheet.js +216 -55
  95. package/dist/components/field-context.d.ts +1 -1
  96. package/dist/components/filter-bar.d.ts +3 -3
  97. package/dist/components/filter-bar.js +43 -29
  98. package/dist/components/form-controls.d.ts +12 -3
  99. package/dist/components/form-controls.js +46 -22
  100. package/dist/components/form-layout.d.ts +14 -10
  101. package/dist/components/form-layout.js +68 -23
  102. package/dist/components/glass-menu.d.ts +3 -0
  103. package/dist/components/glass-menu.js +63 -0
  104. package/dist/components/gradient-edge.d.ts +9 -0
  105. package/dist/components/gradient-edge.js +31 -0
  106. package/dist/components/hotkeys.d.ts +2 -2
  107. package/dist/components/icon.d.ts +1 -1
  108. package/dist/components/input.d.ts +7 -5
  109. package/dist/components/input.js +29 -17
  110. package/dist/components/keyboard-shortcuts.d.ts +2 -2
  111. package/dist/components/keycap.d.ts +10 -6
  112. package/dist/components/keycap.js +57 -19
  113. package/dist/components/layout.d.ts +13 -13
  114. package/dist/components/lightbox.d.ts +9 -3
  115. package/dist/components/lightbox.js +13 -9
  116. package/dist/components/link.d.ts +1 -1
  117. package/dist/components/locale.d.ts +42 -2
  118. package/dist/components/locale.js +43 -3
  119. package/dist/components/log-entry.d.ts +40 -0
  120. package/dist/components/log-entry.js +146 -0
  121. package/dist/components/log-list.d.ts +3 -3
  122. package/dist/components/mention-input.d.ts +2 -2
  123. package/dist/components/mention-input.js +4 -3
  124. package/dist/components/menu.d.ts +7 -3
  125. package/dist/components/menu.js +34 -37
  126. package/dist/components/meter.d.ts +10 -2
  127. package/dist/components/meter.js +64 -6
  128. package/dist/components/navigation.d.ts +21 -4
  129. package/dist/components/navigation.js +84 -19
  130. package/dist/components/notification-tray.d.ts +1 -1
  131. package/dist/components/notification-tray.js +5 -4
  132. package/dist/components/overlays.d.ts +6 -4
  133. package/dist/components/overlays.js +69 -40
  134. package/dist/components/page-frame.d.ts +4 -4
  135. package/dist/components/page-frame.js +1 -1
  136. package/dist/components/panel.d.ts +4 -4
  137. package/dist/components/panel.js +18 -12
  138. package/dist/components/profile-header.d.ts +1 -1
  139. package/dist/components/progress.d.ts +1 -1
  140. package/dist/components/project-avatar.d.ts +1 -1
  141. package/dist/components/radio-card.d.ts +2 -2
  142. package/dist/components/radio-card.js +10 -9
  143. package/dist/components/record.d.ts +29 -5
  144. package/dist/components/record.js +147 -18
  145. package/dist/components/resolved-file-url.d.ts +19 -0
  146. package/dist/components/resolved-file-url.js +49 -0
  147. package/dist/components/scroll-area.d.ts +1 -1
  148. package/dist/components/secret-dialog.d.ts +1 -1
  149. package/dist/components/segmented-bar.d.ts +4 -2
  150. package/dist/components/segmented-bar.js +16 -6
  151. package/dist/components/select.d.ts +9 -6
  152. package/dist/components/select.js +103 -127
  153. package/dist/components/settings.d.ts +4 -4
  154. package/dist/components/shell-skeleton.d.ts +1 -1
  155. package/dist/components/shell-skeleton.js +1 -1
  156. package/dist/components/shell.d.ts +21 -21
  157. package/dist/components/shell.js +43 -43
  158. package/dist/components/side-panel.d.ts +3 -3
  159. package/dist/components/sidebar.d.ts +13 -8
  160. package/dist/components/sidebar.js +55 -27
  161. package/dist/components/single-line-text.d.ts +2 -0
  162. package/dist/components/single-line-text.js +16 -0
  163. package/dist/components/site-banner.d.ts +5 -2
  164. package/dist/components/site-banner.js +17 -6
  165. package/dist/components/skeleton.d.ts +8 -7
  166. package/dist/components/skeleton.js +28 -16
  167. package/dist/components/skeletons.d.ts +17 -5
  168. package/dist/components/skeletons.js +71 -8
  169. package/dist/components/stages.d.ts +83 -11
  170. package/dist/components/stages.js +512 -156
  171. package/dist/components/stat-card.d.ts +12 -4
  172. package/dist/components/stat-card.js +92 -37
  173. package/dist/components/status-banner.d.ts +1 -1
  174. package/dist/components/status-banner.js +1 -1
  175. package/dist/components/status.d.ts +2 -2
  176. package/dist/components/steps.d.ts +1 -1
  177. package/dist/components/switch.d.ts +1 -1
  178. package/dist/components/tabs.d.ts +8 -8
  179. package/dist/components/tabs.js +26 -13
  180. package/dist/components/theme-customizer.d.ts +2 -2
  181. package/dist/components/theme-toggle.d.ts +4 -0
  182. package/dist/components/theme-toggle.js +67 -0
  183. package/dist/components/toast.d.ts +10 -3
  184. package/dist/components/toast.js +78 -29
  185. package/dist/components/use-new-version-available.d.ts +6 -0
  186. package/dist/components/use-new-version-available.js +29 -0
  187. package/dist/components/user-chip.d.ts +3 -3
  188. package/dist/components/wizard.d.ts +2 -2
  189. package/dist/feedback/contract.d.ts +136 -136
  190. package/dist/feedback/feedback-controller.d.ts +6 -6
  191. package/dist/feedback/generated/zod.gen.d.ts +28 -28
  192. package/dist/feedback/operator-contract.d.ts +11 -11
  193. package/dist/feedback/operator-controller.d.ts +32 -13
  194. package/dist/feedback/operator-controller.js +44 -11
  195. package/dist/preset.js +289 -33
  196. package/dist/styled-system/styles.css +3294 -1079
  197. package/dist/styled-system/tokens/index.mjs +598 -22
  198. package/dist/styled-system/tokens/tokens.d.ts +11 -11
  199. package/dist/styled-system/types/prop-type.d.ts +2 -2
  200. package/dist/styles.css +16 -4
  201. package/dist/theme/color.d.ts +3 -0
  202. package/dist/theme/color.js +5 -0
  203. package/dist/theme/derive.d.ts +9 -2
  204. package/dist/theme/derive.js +72 -12
  205. package/dist/theme/palettes.d.ts +49 -6
  206. package/dist/theme/palettes.js +84 -15
  207. package/dist/theme/tokens.d.ts +3 -3
  208. package/dist/theme/tokens.js +107 -32
  209. package/package.json +40 -3
@@ -11,22 +11,22 @@ type FeedbackControllerOptions = {
11
11
  onFeedbackCreated?: (item: FeedbackItem) => void;
12
12
  };
13
13
  declare function useFeedbackController({ active, config, onFeedbackCreated }: FeedbackControllerOptions): {
14
- createMutation: import("@tanstack/react-query/build/legacy").UseMutationResult<FeedbackItem, Error, {
14
+ createMutation: import("@tanstack/react-query").UseMutationResult<FeedbackItem, Error, {
15
15
  queryRoot: readonly string[];
16
16
  values: FeedbackSubmitValues;
17
17
  }, unknown>;
18
- messageMutation: import("@tanstack/react-query/build/legacy").UseMutationResult<import("./contract.js").FeedbackMessage, Error, {
18
+ messageMutation: import("@tanstack/react-query").UseMutationResult<import("./contract.js").FeedbackMessage, Error, {
19
19
  body: string;
20
20
  feedbackId: string;
21
21
  queryRoot: readonly string[];
22
22
  }, void>;
23
23
  messageStates: Record<string, FeedbackMessageMutationState>;
24
- updateMutation: import("@tanstack/react-query/build/legacy").UseMutationResult<FeedbackItem, Error, {
24
+ updateMutation: import("@tanstack/react-query").UseMutationResult<FeedbackItem, Error, {
25
25
  feedbackId: string;
26
26
  input: FeedbackUpdateInput;
27
27
  queryRoot: readonly string[];
28
28
  }, unknown>;
29
- withdrawMutation: import("@tanstack/react-query/build/legacy").UseMutationResult<FeedbackItem, Error, {
29
+ withdrawMutation: import("@tanstack/react-query").UseMutationResult<FeedbackItem, Error, {
30
30
  feedbackId: string;
31
31
  queryRoot: readonly string[];
32
32
  }, unknown>;
@@ -35,9 +35,9 @@ declare function useFeedbackController({ active, config, onFeedbackCreated }: Fe
35
35
  comments: Record<string, CommentItemData[]>;
36
36
  createFeedback: (values: FeedbackSubmitValues) => Promise<FeedbackItem>;
37
37
  createMessage: (feedbackId: string, body: string) => Promise<import("./contract.js").FeedbackMessage>;
38
- detailQuery: import("@tanstack/react-query/build/legacy").UseQueryResult<NoInfer<FeedbackItem>, Error>;
38
+ detailQuery: import("@tanstack/react-query").UseQueryResult<NoInfer<FeedbackItem>, Error>;
39
39
  items: import("./feedback-tracking-types.js").UserFeedbackItem[];
40
- itemsQuery: import("@tanstack/react-query/build/legacy").UseQueryResult<NoInfer<FeedbackSummary[]>, Error>;
40
+ itemsQuery: import("@tanstack/react-query").UseQueryResult<NoInfer<FeedbackSummary[]>, Error>;
41
41
  isMessageSubmitting: boolean;
42
42
  messageError: Error | null;
43
43
  selectedDetail: NoInfer<FeedbackItem> | undefined;
@@ -63,10 +63,10 @@ export declare const zHttpErrorResponse: z.ZodObject<{
63
63
  export declare const zFeedbackStatusEvent: z.ZodObject<{
64
64
  id: z.ZodString;
65
65
  status: z.ZodEnum<{
66
- in_progress: "in_progress";
67
- completed: "completed";
68
66
  received: "received";
67
+ in_progress: "in_progress";
69
68
  discussion_required: "discussion_required";
69
+ completed: "completed";
70
70
  no_action: "no_action";
71
71
  withdrawn: "withdrawn";
72
72
  }>;
@@ -169,10 +169,10 @@ export declare const zFeedbackSummary: z.ZodObject<{
169
169
  my_team: "my_team";
170
170
  }>;
171
171
  status: z.ZodEnum<{
172
- in_progress: "in_progress";
173
- completed: "completed";
174
172
  received: "received";
173
+ in_progress: "in_progress";
175
174
  discussion_required: "discussion_required";
175
+ completed: "completed";
176
176
  no_action: "no_action";
177
177
  withdrawn: "withdrawn";
178
178
  }>;
@@ -210,10 +210,10 @@ export declare const zFeedbackListResponse: z.ZodObject<{
210
210
  my_team: "my_team";
211
211
  }>;
212
212
  status: z.ZodEnum<{
213
- in_progress: "in_progress";
214
- completed: "completed";
215
213
  received: "received";
214
+ in_progress: "in_progress";
216
215
  discussion_required: "discussion_required";
216
+ completed: "completed";
217
217
  no_action: "no_action";
218
218
  withdrawn: "withdrawn";
219
219
  }>;
@@ -283,10 +283,10 @@ export declare const zFeedbackItem: z.ZodObject<{
283
283
  my_team: "my_team";
284
284
  }>;
285
285
  status: z.ZodEnum<{
286
- in_progress: "in_progress";
287
- completed: "completed";
288
286
  received: "received";
287
+ in_progress: "in_progress";
289
288
  discussion_required: "discussion_required";
289
+ completed: "completed";
290
290
  no_action: "no_action";
291
291
  withdrawn: "withdrawn";
292
292
  }>;
@@ -300,10 +300,10 @@ export declare const zFeedbackItem: z.ZodObject<{
300
300
  statusTimeline: z.ZodArray<z.ZodObject<{
301
301
  id: z.ZodString;
302
302
  status: z.ZodEnum<{
303
- in_progress: "in_progress";
304
- completed: "completed";
305
303
  received: "received";
304
+ in_progress: "in_progress";
306
305
  discussion_required: "discussion_required";
306
+ completed: "completed";
307
307
  no_action: "no_action";
308
308
  withdrawn: "withdrawn";
309
309
  }>;
@@ -360,10 +360,10 @@ export declare const zListFeedbackV1ProjectsProjectIdEnvironmentsEnvironmentFeed
360
360
  my_team: "my_team";
361
361
  }>;
362
362
  status: z.ZodEnum<{
363
- in_progress: "in_progress";
364
- completed: "completed";
365
363
  received: "received";
364
+ in_progress: "in_progress";
366
365
  discussion_required: "discussion_required";
366
+ completed: "completed";
367
367
  no_action: "no_action";
368
368
  withdrawn: "withdrawn";
369
369
  }>;
@@ -426,10 +426,10 @@ export declare const zCreateFeedbackV1ProjectsProjectIdEnvironmentsEnvironmentFe
426
426
  my_team: "my_team";
427
427
  }>;
428
428
  status: z.ZodEnum<{
429
- in_progress: "in_progress";
430
- completed: "completed";
431
429
  received: "received";
430
+ in_progress: "in_progress";
432
431
  discussion_required: "discussion_required";
432
+ completed: "completed";
433
433
  no_action: "no_action";
434
434
  withdrawn: "withdrawn";
435
435
  }>;
@@ -443,10 +443,10 @@ export declare const zCreateFeedbackV1ProjectsProjectIdEnvironmentsEnvironmentFe
443
443
  statusTimeline: z.ZodArray<z.ZodObject<{
444
444
  id: z.ZodString;
445
445
  status: z.ZodEnum<{
446
- in_progress: "in_progress";
447
- completed: "completed";
448
446
  received: "received";
447
+ in_progress: "in_progress";
449
448
  discussion_required: "discussion_required";
449
+ completed: "completed";
450
450
  no_action: "no_action";
451
451
  withdrawn: "withdrawn";
452
452
  }>;
@@ -503,10 +503,10 @@ export declare const zGetFeedbackV1ProjectsProjectIdEnvironmentsEnvironmentFeedb
503
503
  my_team: "my_team";
504
504
  }>;
505
505
  status: z.ZodEnum<{
506
- in_progress: "in_progress";
507
- completed: "completed";
508
506
  received: "received";
507
+ in_progress: "in_progress";
509
508
  discussion_required: "discussion_required";
509
+ completed: "completed";
510
510
  no_action: "no_action";
511
511
  withdrawn: "withdrawn";
512
512
  }>;
@@ -520,10 +520,10 @@ export declare const zGetFeedbackV1ProjectsProjectIdEnvironmentsEnvironmentFeedb
520
520
  statusTimeline: z.ZodArray<z.ZodObject<{
521
521
  id: z.ZodString;
522
522
  status: z.ZodEnum<{
523
- in_progress: "in_progress";
524
- completed: "completed";
525
523
  received: "received";
524
+ in_progress: "in_progress";
526
525
  discussion_required: "discussion_required";
526
+ completed: "completed";
527
527
  no_action: "no_action";
528
528
  withdrawn: "withdrawn";
529
529
  }>;
@@ -584,10 +584,10 @@ export declare const zUpdateFeedbackV1ProjectsProjectIdEnvironmentsEnvironmentFe
584
584
  my_team: "my_team";
585
585
  }>;
586
586
  status: z.ZodEnum<{
587
- in_progress: "in_progress";
588
- completed: "completed";
589
587
  received: "received";
588
+ in_progress: "in_progress";
590
589
  discussion_required: "discussion_required";
590
+ completed: "completed";
591
591
  no_action: "no_action";
592
592
  withdrawn: "withdrawn";
593
593
  }>;
@@ -601,10 +601,10 @@ export declare const zUpdateFeedbackV1ProjectsProjectIdEnvironmentsEnvironmentFe
601
601
  statusTimeline: z.ZodArray<z.ZodObject<{
602
602
  id: z.ZodString;
603
603
  status: z.ZodEnum<{
604
- in_progress: "in_progress";
605
- completed: "completed";
606
604
  received: "received";
605
+ in_progress: "in_progress";
607
606
  discussion_required: "discussion_required";
607
+ completed: "completed";
608
608
  no_action: "no_action";
609
609
  withdrawn: "withdrawn";
610
610
  }>;
@@ -661,10 +661,10 @@ export declare const zWithdrawFeedbackV1ProjectsProjectIdEnvironmentsEnvironment
661
661
  my_team: "my_team";
662
662
  }>;
663
663
  status: z.ZodEnum<{
664
- in_progress: "in_progress";
665
- completed: "completed";
666
664
  received: "received";
665
+ in_progress: "in_progress";
667
666
  discussion_required: "discussion_required";
667
+ completed: "completed";
668
668
  no_action: "no_action";
669
669
  withdrawn: "withdrawn";
670
670
  }>;
@@ -678,10 +678,10 @@ export declare const zWithdrawFeedbackV1ProjectsProjectIdEnvironmentsEnvironment
678
678
  statusTimeline: z.ZodArray<z.ZodObject<{
679
679
  id: z.ZodString;
680
680
  status: z.ZodEnum<{
681
- in_progress: "in_progress";
682
- completed: "completed";
683
681
  received: "received";
682
+ in_progress: "in_progress";
684
683
  discussion_required: "discussion_required";
684
+ completed: "completed";
685
685
  no_action: "no_action";
686
686
  withdrawn: "withdrawn";
687
687
  }>;
@@ -1,17 +1,17 @@
1
1
  import { z } from "zod";
2
2
  declare const feedbackTriageStatusSchema: z.ZodEnum<{
3
- in_progress: "in_progress";
4
- completed: "completed";
5
3
  received: "received";
4
+ in_progress: "in_progress";
6
5
  discussion_required: "discussion_required";
6
+ completed: "completed";
7
7
  no_action: "no_action";
8
8
  }>;
9
9
  declare const operatorFeedbackSummarySchema: z.ZodObject<{
10
10
  status: z.ZodEnum<{
11
- in_progress: "in_progress";
12
- completed: "completed";
13
11
  received: "received";
12
+ in_progress: "in_progress";
14
13
  discussion_required: "discussion_required";
14
+ completed: "completed";
15
15
  no_action: "no_action";
16
16
  withdrawn: "withdrawn";
17
17
  }>;
@@ -22,21 +22,21 @@ declare const operatorFeedbackSummarySchema: z.ZodObject<{
22
22
  }>;
23
23
  description: z.ZodString;
24
24
  id: z.ZodUUID;
25
- createdAt: z.ZodISODateTime;
26
25
  subject: z.ZodString;
27
26
  urgency: z.ZodEnum<{
28
27
  normal: "normal";
29
28
  emergency: "emergency";
30
29
  }>;
30
+ createdAt: z.ZodISODateTime;
31
31
  updatedAt: z.ZodISODateTime;
32
32
  reporterEmail: z.ZodNullable<z.ZodString>;
33
33
  }, z.core.$strip>;
34
34
  declare const operatorFeedbackItemSchema: z.ZodObject<{
35
35
  status: z.ZodEnum<{
36
- in_progress: "in_progress";
37
- completed: "completed";
38
36
  received: "received";
37
+ in_progress: "in_progress";
39
38
  discussion_required: "discussion_required";
39
+ completed: "completed";
40
40
  no_action: "no_action";
41
41
  withdrawn: "withdrawn";
42
42
  }>;
@@ -47,12 +47,12 @@ declare const operatorFeedbackItemSchema: z.ZodObject<{
47
47
  }>;
48
48
  description: z.ZodString;
49
49
  id: z.ZodUUID;
50
- createdAt: z.ZodISODateTime;
51
50
  subject: z.ZodString;
52
51
  urgency: z.ZodEnum<{
53
52
  normal: "normal";
54
53
  emergency: "emergency";
55
54
  }>;
55
+ createdAt: z.ZodISODateTime;
56
56
  updatedAt: z.ZodISODateTime;
57
57
  reporterEmail: z.ZodNullable<z.ZodString>;
58
58
  canReply: z.ZodBoolean;
@@ -81,10 +81,10 @@ declare const operatorFeedbackItemSchema: z.ZodObject<{
81
81
  declare const operatorFeedbackListResponseSchema: z.ZodObject<{
82
82
  items: z.ZodArray<z.ZodObject<{
83
83
  status: z.ZodEnum<{
84
- in_progress: "in_progress";
85
- completed: "completed";
86
84
  received: "received";
85
+ in_progress: "in_progress";
87
86
  discussion_required: "discussion_required";
87
+ completed: "completed";
88
88
  no_action: "no_action";
89
89
  withdrawn: "withdrawn";
90
90
  }>;
@@ -95,12 +95,12 @@ declare const operatorFeedbackListResponseSchema: z.ZodObject<{
95
95
  }>;
96
96
  description: z.ZodString;
97
97
  id: z.ZodUUID;
98
- createdAt: z.ZodISODateTime;
99
98
  subject: z.ZodString;
100
99
  urgency: z.ZodEnum<{
101
100
  normal: "normal";
102
101
  emergency: "emergency";
103
102
  }>;
103
+ createdAt: z.ZodISODateTime;
104
104
  updatedAt: z.ZodISODateTime;
105
105
  reporterEmail: z.ZodNullable<z.ZodString>;
106
106
  }, z.core.$strip>>;
@@ -1,17 +1,25 @@
1
+ import { type UseQueryResult } from "@tanstack/react-query";
1
2
  import { type FeedbackOperatorClientConfig } from "./operator-client.js";
3
+ import type { FeedbackTriageStatus } from "./operator-contract.js";
4
+ import type { FeedbackOperatorProps } from "../components/feedback-sheet.js";
2
5
  type FeedbackOperatorControllerConfig = FeedbackOperatorClientConfig & {
6
+ /** Keeps one operator's cached feedback apart from another's, such as their user id. */
3
7
  cacheScope: string;
4
8
  };
5
- declare function useFeedbackOperatorController(config: FeedbackOperatorControllerConfig, selectedFeedbackId: string | undefined): {
9
+ /**
10
+ * The operator's feedback queries: every reporter's items while `active`, the open one with its
11
+ * conversation, and the status change and reply, each resolving once both are refetched.
12
+ */
13
+ declare function useFeedbackOperatorController(config: FeedbackOperatorControllerConfig, openFeedbackId: string | undefined, active?: boolean): {
6
14
  getAttachmentUrl: (feedbackId: string, attachmentId: string) => Promise<string>;
7
- itemQuery: import("@tanstack/react-query/build/legacy").UseQueryResult<NoInfer<{
8
- status: "in_progress" | "completed" | "received" | "discussion_required" | "no_action" | "withdrawn";
15
+ itemQuery: UseQueryResult<NoInfer<{
16
+ status: "received" | "in_progress" | "discussion_required" | "completed" | "no_action" | "withdrawn";
9
17
  type: "general" | "bug" | "feature";
10
18
  description: string;
11
19
  id: string;
12
- createdAt: string;
13
20
  subject: string;
14
21
  urgency: "normal" | "emergency";
22
+ createdAt: string;
15
23
  updatedAt: string;
16
24
  reporterEmail: string | null;
17
25
  canReply: boolean;
@@ -34,26 +42,29 @@ declare function useFeedbackOperatorController(config: FeedbackOperatorControlle
34
42
  editedAt_epoch_milliseconds: number | null;
35
43
  }[];
36
44
  }>, Error>;
37
- itemsQuery: import("@tanstack/react-query/build/legacy").UseQueryResult<NoInfer<{
38
- status: "in_progress" | "completed" | "received" | "discussion_required" | "no_action" | "withdrawn";
45
+ itemsQuery: UseQueryResult<NoInfer<{
46
+ status: "received" | "in_progress" | "discussion_required" | "completed" | "no_action" | "withdrawn";
39
47
  type: "general" | "bug" | "feature";
40
48
  description: string;
41
49
  id: string;
42
- createdAt: string;
43
50
  subject: string;
44
51
  urgency: "normal" | "emergency";
52
+ createdAt: string;
45
53
  updatedAt: string;
46
54
  reporterEmail: string | null;
47
55
  }[]>, Error>;
48
- messageMutation: import("@tanstack/react-query/build/legacy").UseMutationResult<import("./contract.js").FeedbackMessage, Error, string, unknown>;
49
- statusMutation: import("@tanstack/react-query/build/legacy").UseMutationResult<{
50
- status: "in_progress" | "completed" | "received" | "discussion_required" | "no_action" | "withdrawn";
56
+ messageMutation: import("@tanstack/react-query").UseMutationResult<import("./contract.js").FeedbackMessage, Error, {
57
+ feedbackId: string;
58
+ body: string;
59
+ }, unknown>;
60
+ statusMutation: import("@tanstack/react-query").UseMutationResult<{
61
+ status: "received" | "in_progress" | "discussion_required" | "completed" | "no_action" | "withdrawn";
51
62
  type: "general" | "bug" | "feature";
52
63
  description: string;
53
64
  id: string;
54
- createdAt: string;
55
65
  subject: string;
56
66
  urgency: "normal" | "emergency";
67
+ createdAt: string;
57
68
  updatedAt: string;
58
69
  reporterEmail: string | null;
59
70
  canReply: boolean;
@@ -75,6 +86,14 @@ declare function useFeedbackOperatorController(config: FeedbackOperatorControlle
75
86
  createdAt_epoch_milliseconds: number;
76
87
  editedAt_epoch_milliseconds: number | null;
77
88
  }[];
78
- }, Error, "in_progress" | "completed" | "received" | "discussion_required" | "no_action", unknown>;
89
+ }, Error, {
90
+ feedbackId: string;
91
+ status: FeedbackTriageStatus;
92
+ }, unknown>;
79
93
  };
80
- export { type FeedbackOperatorControllerConfig, useFeedbackOperatorController };
94
+ /**
95
+ * The feedback sheet's `operator` tab, run against the API: pass it while the viewer answers
96
+ * feedback, with `active` while the sheet is open.
97
+ */
98
+ declare function useFeedbackOperatorSheet(config: FeedbackOperatorControllerConfig, active: boolean): FeedbackOperatorProps;
99
+ export { type FeedbackOperatorControllerConfig, useFeedbackOperatorController, useFeedbackOperatorSheet, };
@@ -2,7 +2,11 @@ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
2
2
  import * as React from "react";
3
3
  import { createFeedbackOperatorClient } from "./operator-client.js";
4
4
  import { requireConfig } from "./require-config.js";
5
- function useFeedbackOperatorController(config, selectedFeedbackId) {
5
+ /**
6
+ * The operator's feedback queries: every reporter's items while `active`, the open one with its
7
+ * conversation, and the status change and reply, each resolving once both are refetched.
8
+ */
9
+ function useFeedbackOperatorController(config, openFeedbackId, active = true) {
6
10
  const { baseUrl, cacheScope: configuredCacheScope, getBearerToken } = config;
7
11
  const client = React.useMemo(() => createFeedbackOperatorClient({ baseUrl, getBearerToken }), [baseUrl, getBearerToken]);
8
12
  const cacheScope = requireConfig(configuredCacheScope, "cacheScope");
@@ -11,21 +15,23 @@ function useFeedbackOperatorController(config, selectedFeedbackId) {
11
15
  const itemsQuery = useQuery({
12
16
  queryKey: [...queryRoot, "items"],
13
17
  queryFn: ({ signal }) => client.list({ signal }),
18
+ enabled: active,
14
19
  retry: false,
15
20
  });
16
21
  const itemQuery = useQuery({
17
- queryKey: [...queryRoot, "item", selectedFeedbackId],
18
- queryFn: ({ signal }) => client.get(requireSelectedFeedbackId(selectedFeedbackId), { signal }),
19
- enabled: selectedFeedbackId !== undefined,
22
+ queryKey: [...queryRoot, "item", openFeedbackId],
23
+ queryFn: ({ signal }) => client.get(requireOpenFeedbackId(openFeedbackId), { signal }),
24
+ enabled: active && openFeedbackId !== undefined,
20
25
  retry: false,
21
26
  });
27
+ const refresh = () => queryClient.invalidateQueries({ queryKey: queryRoot });
22
28
  const statusMutation = useMutation({
23
- mutationFn: (status) => client.updateStatus(requireSelectedFeedbackId(selectedFeedbackId), status),
24
- onSuccess: async () => queryClient.invalidateQueries({ queryKey: queryRoot }),
29
+ mutationFn: ({ feedbackId, status }) => client.updateStatus(feedbackId, status),
30
+ onSuccess: refresh,
25
31
  });
26
32
  const messageMutation = useMutation({
27
- mutationFn: (body) => client.createMessage(requireSelectedFeedbackId(selectedFeedbackId), body),
28
- onSuccess: async () => queryClient.invalidateQueries({ queryKey: queryRoot }),
33
+ mutationFn: ({ feedbackId, body }) => client.createMessage(feedbackId, body),
34
+ onSuccess: refresh,
29
35
  });
30
36
  return {
31
37
  getAttachmentUrl: (feedbackId, attachmentId) => client.getAttachmentUrl(feedbackId, attachmentId),
@@ -35,9 +41,36 @@ function useFeedbackOperatorController(config, selectedFeedbackId) {
35
41
  statusMutation,
36
42
  };
37
43
  }
38
- function requireSelectedFeedbackId(feedbackId) {
44
+ /**
45
+ * The feedback sheet's `operator` tab, run against the API: pass it while the viewer answers
46
+ * feedback, with `active` while the sheet is open.
47
+ */
48
+ function useFeedbackOperatorSheet(config, active) {
49
+ const [openFeedbackId, setOpenFeedbackId] = React.useState();
50
+ const { itemsQuery, itemQuery, messageMutation, statusMutation } = useFeedbackOperatorController(config, openFeedbackId, active);
51
+ return {
52
+ items: toLoadState(itemsQuery),
53
+ onOpenItem: setOpenFeedbackId,
54
+ item: openFeedbackId === undefined ? undefined : toLoadState(itemQuery),
55
+ onReply: async (feedbackId, body) => {
56
+ await messageMutation.mutateAsync({ feedbackId, body });
57
+ },
58
+ onStatusChange: async (feedbackId, status) => {
59
+ await statusMutation.mutateAsync({ feedbackId, status });
60
+ },
61
+ };
62
+ }
63
+ /** A query as the sheet reads it: loading until its first answer, then its data or failure. */
64
+ function toLoadState(query) {
65
+ if (query.isPending)
66
+ return { status: "loading" };
67
+ if (query.isError)
68
+ return { status: "error", error: query.error, retry: () => void query.refetch() };
69
+ return { status: "loaded", data: query.data };
70
+ }
71
+ function requireOpenFeedbackId(feedbackId) {
39
72
  if (feedbackId === undefined)
40
- throw new Error("Select feedback before changing it.");
73
+ throw new Error("Open feedback before loading it.");
41
74
  return feedbackId;
42
75
  }
43
- export { useFeedbackOperatorController };
76
+ export { useFeedbackOperatorController, useFeedbackOperatorSheet, };