@gitlab/duo-ui 6.0.1 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,195 @@
1
+ # [8.0.0](https://gitlab.com/gitlab-org/duo-ui/compare/v7.0.0...v8.0.0) (2025-01-24)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * apply reviewer suggestions ([96b23f3](https://gitlab.com/gitlab-org/duo-ui/commit/96b23f37fa3970c4f2de9603d2fb595f2f76f86a))
7
+ * handle esc key when focus is not on input ([214277b](https://gitlab.com/gitlab-org/duo-ui/commit/214277b905f1b40f42c190975b637f5f0e9107f6))
8
+
9
+
10
+ ### chore
11
+
12
+ * update peer dependency and remove deprecated prop ([fa9bc38](https://gitlab.com/gitlab-org/duo-ui/commit/fa9bc3817060576881b2fb67cfc994b1f0dd146a))
13
+
14
+
15
+ ### BREAKING CHANGES
16
+
17
+ * This change is required to maintain compatibility
18
+ with gitlab-ui changes from
19
+ https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/4911
20
+ where the helpPageUrl prop was removed from Badge component.
21
+
22
+ - Update @gitlab/ui peer dependency to `>=106.2.0` to support future
23
+ versions
24
+ - Set dev dependency to "latest" to ensure development and testing use
25
+ newest version
26
+ - Remove deprecated `helpPageUrl` prop from Badge component in DuoChat
27
+
28
+ # [8.0.0](https://gitlab.com/gitlab-org/duo-ui/compare/v7.0.0...v8.0.0) (2025-01-24)
29
+
30
+
31
+ ### Bug Fixes
32
+
33
+ * apply reviewer suggestions ([96b23f3](https://gitlab.com/gitlab-org/duo-ui/commit/96b23f37fa3970c4f2de9603d2fb595f2f76f86a))
34
+ * handle esc key when focus is not on input ([214277b](https://gitlab.com/gitlab-org/duo-ui/commit/214277b905f1b40f42c190975b637f5f0e9107f6))
35
+
36
+
37
+ ### chore
38
+
39
+ * update peer dependency and remove deprecated prop ([fa9bc38](https://gitlab.com/gitlab-org/duo-ui/commit/fa9bc3817060576881b2fb67cfc994b1f0dd146a))
40
+
41
+
42
+ ### BREAKING CHANGES
43
+
44
+ * This change is required to maintain compatibility
45
+ with gitlab-ui changes from
46
+ https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/4911
47
+ where the helpPageUrl prop was removed from Badge component.
48
+
49
+ - Update @gitlab/ui peer dependency to `>=106.2.0` to support future
50
+ versions
51
+ - Set dev dependency to "latest" to ensure development and testing use
52
+ newest version
53
+ - Remove deprecated `helpPageUrl` prop from Badge component in DuoChat
54
+
55
+ # [8.0.0](https://gitlab.com/gitlab-org/duo-ui/compare/v7.0.0...v8.0.0) (2025-01-24)
56
+
57
+
58
+ ### Bug Fixes
59
+
60
+ * apply reviewer suggestions ([96b23f3](https://gitlab.com/gitlab-org/duo-ui/commit/96b23f37fa3970c4f2de9603d2fb595f2f76f86a))
61
+ * handle esc key when focus is not on input ([214277b](https://gitlab.com/gitlab-org/duo-ui/commit/214277b905f1b40f42c190975b637f5f0e9107f6))
62
+
63
+
64
+ ### chore
65
+
66
+ * update peer dependency and remove deprecated prop ([fa9bc38](https://gitlab.com/gitlab-org/duo-ui/commit/fa9bc3817060576881b2fb67cfc994b1f0dd146a))
67
+
68
+
69
+ ### BREAKING CHANGES
70
+
71
+ * This change is required to maintain compatibility
72
+ with gitlab-ui changes from
73
+ https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/4911
74
+ where the helpPageUrl prop was removed from Badge component.
75
+
76
+ - Update @gitlab/ui peer dependency to `>=106.2.0` to support future
77
+ versions
78
+ - Set dev dependency to "latest" to ensure development and testing use
79
+ newest version
80
+ - Remove deprecated `helpPageUrl` prop from Badge component in DuoChat
81
+
82
+ ## [7.0.1](https://gitlab.com/gitlab-org/duo-ui/compare/v7.0.0...v7.0.1) (2025-01-24)
83
+
84
+
85
+ ### Bug Fixes
86
+
87
+ * apply reviewer suggestions ([96b23f3](https://gitlab.com/gitlab-org/duo-ui/commit/96b23f37fa3970c4f2de9603d2fb595f2f76f86a))
88
+ * handle esc key when focus is not on input ([214277b](https://gitlab.com/gitlab-org/duo-ui/commit/214277b905f1b40f42c190975b637f5f0e9107f6))
89
+
90
+ # [7.0.0](https://gitlab.com/gitlab-org/duo-ui/compare/v6.0.1...v7.0.0) (2025-01-23)
91
+
92
+
93
+ ### Bug Fixes
94
+
95
+ * **UserFeedbackModal:** Adds a11y attributes for checkboxgroup form field ([d0565ac](https://gitlab.com/gitlab-org/duo-ui/commit/d0565aca6641e4ec0b121bd4d341f081d4f53da4))
96
+
97
+
98
+ ### Features
99
+
100
+ * keep context menu open when selecting items ([569e9c4](https://gitlab.com/gitlab-org/duo-ui/commit/569e9c4a9318e4bd5f89f5289e2d71a3a06ddb0a))
101
+ * remove reset specific submit logic ([69657c4](https://gitlab.com/gitlab-org/duo-ui/commit/69657c400006d3c7760fdf12c2a15e6f63f963df))
102
+ * **ci:** add gitlab ui-job and enhance pages job for cross-pipeline use ([1540e06](https://gitlab.com/gitlab-org/duo-ui/commit/1540e0609258d782e0fa1fc8b41508c7b1217118))
103
+ * add /new slash command ([08ea3ca](https://gitlab.com/gitlab-org/duo-ui/commit/08ea3caad6fffec8be72dd33e8207d25b0ef6f63))
104
+
105
+
106
+ ### BREAKING CHANGES
107
+
108
+ * /reset will behave similar to /clear
109
+
110
+ # [7.0.0](https://gitlab.com/gitlab-org/duo-ui/compare/v6.0.1...v7.0.0) (2025-01-23)
111
+
112
+
113
+ ### Bug Fixes
114
+
115
+ * **UserFeedbackModal:** Adds a11y attributes for checkboxgroup form field ([d0565ac](https://gitlab.com/gitlab-org/duo-ui/commit/d0565aca6641e4ec0b121bd4d341f081d4f53da4))
116
+
117
+
118
+ ### Features
119
+
120
+ * remove reset specific submit logic ([69657c4](https://gitlab.com/gitlab-org/duo-ui/commit/69657c400006d3c7760fdf12c2a15e6f63f963df))
121
+ * **ci:** add gitlab ui-job and enhance pages job for cross-pipeline use ([1540e06](https://gitlab.com/gitlab-org/duo-ui/commit/1540e0609258d782e0fa1fc8b41508c7b1217118))
122
+ * add /new slash command ([08ea3ca](https://gitlab.com/gitlab-org/duo-ui/commit/08ea3caad6fffec8be72dd33e8207d25b0ef6f63))
123
+
124
+
125
+ ### BREAKING CHANGES
126
+
127
+ * /reset will behave similar to /clear
128
+
129
+ # [7.0.0](https://gitlab.com/gitlab-org/duo-ui/compare/v6.0.1...v7.0.0) (2025-01-23)
130
+
131
+
132
+ ### Bug Fixes
133
+
134
+ * **UserFeedbackModal:** Adds a11y attributes for checkboxgroup form field ([d0565ac](https://gitlab.com/gitlab-org/duo-ui/commit/d0565aca6641e4ec0b121bd4d341f081d4f53da4))
135
+
136
+
137
+ ### Features
138
+
139
+ * remove reset specific submit logic ([69657c4](https://gitlab.com/gitlab-org/duo-ui/commit/69657c400006d3c7760fdf12c2a15e6f63f963df))
140
+ * **ci:** add gitlab ui-job and enhance pages job for cross-pipeline use ([1540e06](https://gitlab.com/gitlab-org/duo-ui/commit/1540e0609258d782e0fa1fc8b41508c7b1217118))
141
+ * add /new slash command ([08ea3ca](https://gitlab.com/gitlab-org/duo-ui/commit/08ea3caad6fffec8be72dd33e8207d25b0ef6f63))
142
+
143
+
144
+ ### BREAKING CHANGES
145
+
146
+ * /reset will behave similar to /clear
147
+
148
+ # [6.1.0](https://gitlab.com/gitlab-org/duo-ui/compare/v6.0.1...v6.1.0) (2025-01-23)
149
+
150
+
151
+ ### Bug Fixes
152
+
153
+ * **UserFeedbackModal:** Adds a11y attributes for checkboxgroup form field ([d0565ac](https://gitlab.com/gitlab-org/duo-ui/commit/d0565aca6641e4ec0b121bd4d341f081d4f53da4))
154
+
155
+
156
+ ### Features
157
+
158
+ * **ci:** add gitlab ui-job and enhance pages job for cross-pipeline use ([1540e06](https://gitlab.com/gitlab-org/duo-ui/commit/1540e0609258d782e0fa1fc8b41508c7b1217118))
159
+ * add /new slash command ([08ea3ca](https://gitlab.com/gitlab-org/duo-ui/commit/08ea3caad6fffec8be72dd33e8207d25b0ef6f63))
160
+
161
+ # [6.1.0](https://gitlab.com/gitlab-org/duo-ui/compare/v6.0.1...v6.1.0) (2025-01-23)
162
+
163
+
164
+ ### Bug Fixes
165
+
166
+ * **UserFeedbackModal:** Adds a11y attributes for checkboxgroup form field ([d0565ac](https://gitlab.com/gitlab-org/duo-ui/commit/d0565aca6641e4ec0b121bd4d341f081d4f53da4))
167
+
168
+
169
+ ### Features
170
+
171
+ * **ci:** add gitlab ui-job and enhance pages job for cross-pipeline use ([1540e06](https://gitlab.com/gitlab-org/duo-ui/commit/1540e0609258d782e0fa1fc8b41508c7b1217118))
172
+ * add /new slash command ([08ea3ca](https://gitlab.com/gitlab-org/duo-ui/commit/08ea3caad6fffec8be72dd33e8207d25b0ef6f63))
173
+
174
+ # [6.1.0](https://gitlab.com/gitlab-org/duo-ui/compare/v6.0.1...v6.1.0) (2025-01-20)
175
+
176
+
177
+ ### Bug Fixes
178
+
179
+ * **UserFeedbackModal:** Adds a11y attributes for checkboxgroup form field ([d0565ac](https://gitlab.com/gitlab-org/duo-ui/commit/d0565aca6641e4ec0b121bd4d341f081d4f53da4))
180
+
181
+
182
+ ### Features
183
+
184
+ * add /new slash command ([08ea3ca](https://gitlab.com/gitlab-org/duo-ui/commit/08ea3caad6fffec8be72dd33e8207d25b0ef6f63))
185
+
186
+ ## [6.0.2](https://gitlab.com/gitlab-org/duo-ui/compare/v6.0.1...v6.0.2) (2025-01-20)
187
+
188
+
189
+ ### Bug Fixes
190
+
191
+ * **UserFeedbackModal:** Adds a11y attributes for checkboxgroup form field ([d0565ac](https://gitlab.com/gitlab-org/duo-ui/commit/d0565aca6641e4ec0b121bd4d341f081d4f53da4))
192
+
1
193
  ## [6.0.1](https://gitlab.com/gitlab-org/duo-ui/compare/v6.0.0...v6.0.1) (2025-01-06)
2
194
 
3
195
 
@@ -1,5 +1,5 @@
1
1
  import debounce from 'lodash/debounce';
2
- import { GlCard } from '@gitlab/ui';
2
+ import { GlButton, GlCard } from '@gitlab/ui';
3
3
  import { translate } from '../../../../../utils/i18n';
4
4
  import DuoChatContextItemSelections from '../duo_chat_context_item_selections/duo_chat_context_item_selections';
5
5
  import { contextItemsValidator, categoriesValidator, wrapIndex } from '../utils';
@@ -11,6 +11,7 @@ const SEARCH_DEBOUNCE_MS = 30;
11
11
  var script = {
12
12
  name: 'DuoChatContextItemMenu',
13
13
  components: {
14
+ GlButton,
14
15
  GlCard,
15
16
  DuoChatContextItemMenuCategoryItems,
16
17
  DuoChatContextItemMenuSearchItems,
@@ -124,12 +125,6 @@ var script = {
124
125
  * @property {Object} item - The selected context item
125
126
  */
126
127
  this.$emit('select', this.results.find(result => result.id === item.id));
127
-
128
- /**
129
- * Emitted when the menu should be closed.
130
- */
131
- this.$emit('close');
132
- this.resetSelection();
133
128
  },
134
129
  removeItem(item) {
135
130
  /**
@@ -174,19 +169,27 @@ var script = {
174
169
  break;
175
170
  case 'Escape':
176
171
  e.preventDefault();
177
- if (this.showCategorySelection) {
178
- this.$emit('close');
179
- return;
180
- }
181
- this.selectedCategory = null;
182
-
183
- /**
184
- * Emitted when the parent DuoChat component should refocus on the main prompt input
185
- */
186
- this.$emit('focus-prompt');
172
+ this.handleEsc();
187
173
  break;
188
174
  }
189
175
  },
176
+ handleEsc() {
177
+ if (this.showCategorySelection) {
178
+ this.closeMenu();
179
+ return;
180
+ }
181
+
182
+ // Otherwise go back to the category selection menu
183
+ this.selectedCategory = null;
184
+
185
+ /**
186
+ * Emitted when the parent DuoChat component should refocus on the main prompt input
187
+ */
188
+ this.$emit('focus-prompt');
189
+ },
190
+ closeMenu() {
191
+ this.$emit('close');
192
+ },
190
193
  moveActiveIndex(step) {
191
194
  if (this.showCategorySelection) {
192
195
  // Categories cannot be disabled, so just loop to the next/prev one
@@ -230,7 +233,7 @@ var script = {
230
233
  const __vue_script__ = script;
231
234
 
232
235
  /* template */
233
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.selections.length)?_c('duo-chat-context-item-selections',{staticClass:"gl-mb-3",attrs:{"selections":_vm.selections,"categories":_vm.categories,"removable":true,"title":_vm.$options.i18n.selectedContextItemsTitle,"default-collapsed":false},on:{"remove":_vm.removeItem,"get-content":_vm.onGetContextItemContent}}):_vm._e(),_vm._v(" "),(_vm.open)?_c('gl-card',{staticClass:"slash-commands !gl-absolute gl-bottom-0 gl-w-full gl-pl-0 gl-shadow-md",attrs:{"body-class":"!gl-p-2","data-testid":"context-item-menu"}},[(_vm.showCategorySelection)?_c('duo-chat-context-item-menu-category-items',{attrs:{"active-index":_vm.activeIndex,"categories":_vm.categories},on:{"select":_vm.selectCategory,"active-index-change":function($event){_vm.activeIndex = $event;}}}):_c('duo-chat-context-item-menu-search-items',{attrs:{"active-index":_vm.activeIndex,"category":_vm.selectedCategory,"loading":_vm.loading,"error":_vm.error,"results":_vm.results},on:{"select":_vm.selectItem,"keyup":_vm.handleKeyUp,"active-index-change":function($event){_vm.activeIndex = $event;}},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=$$v;},expression:"searchQuery"}})],1):_vm._e()],1)};
236
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.selections.length)?_c('duo-chat-context-item-selections',{staticClass:"gl-mb-3",attrs:{"selections":_vm.selections,"removable":true,"title":_vm.$options.i18n.selectedContextItemsTitle,"default-collapsed":false,"data-testid":"primary-context-item-selections"},on:{"remove":_vm.removeItem,"get-content":_vm.onGetContextItemContent}}):_vm._e(),_vm._v(" "),(_vm.open)?_c('div',{attrs:{"tabindex":"0","data-testid":"context-item-menu-wrapper"},on:{"keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"esc",27,$event.key,["Esc","Escape"])){ return null; }return _vm.handleEsc.apply(null, arguments)}}},[_c('gl-card',{staticClass:"slash-commands !gl-absolute gl-bottom-0 gl-w-full gl-pl-0 gl-shadow-md",attrs:{"body-class":"!gl-p-2","data-testid":"context-item-menu"}},[_c('div',{staticClass:"gl-flex gl-mb-2"},[(_vm.selectedCategory)?_c('gl-button',{staticClass:"!gl-shadow-none",attrs:{"size":"small","icon":"chevron-lg-left","aria-label":"Go back","data-testid":"context-item-menu-back-button"},on:{"click":function($event){return _vm.handleEsc()}}}):_vm._e(),_vm._v(" "),_c('gl-button',{staticClass:"gl-ml-auto !gl-shadow-none",attrs:{"size":"small","icon":"close","aria-label":"Close menu","data-testid":"context-item-menu-close-button"},on:{"click":function($event){return _vm.closeMenu()}}})],1),_vm._v(" "),(_vm.showCategorySelection)?_c('duo-chat-context-item-menu-category-items',{attrs:{"active-index":_vm.activeIndex,"categories":_vm.categories},on:{"select":_vm.selectCategory,"active-index-change":function($event){_vm.activeIndex = $event;}}}):_c('duo-chat-context-item-menu-search-items',{attrs:{"active-index":_vm.activeIndex,"category":_vm.selectedCategory,"loading":_vm.loading,"error":_vm.error,"results":_vm.results},on:{"select":_vm.selectItem,"keyup":_vm.handleKeyUp,"active-index-change":function($event){_vm.activeIndex = $event;}},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=$$v;},expression:"searchQuery"}}),_vm._v(" "),(_vm.selections.length)?_c('duo-chat-context-item-selections',{staticClass:"gl-mt-2 !gl-mb-0 gl-max-h-13 gl-overflow-y-auto",attrs:{"selections":_vm.selections,"removable":true,"title":_vm.$options.i18n.selectedContextItemsTitle,"default-collapsed":false,"data-testid":"in-menu-context-item-selections"},on:{"remove":_vm.removeItem,"get-content":_vm.onGetContextItemContent}}):_vm._e()],1)],1):_vm._e()],1)};
234
237
  var __vue_staticRenderFns__ = [];
235
238
 
236
239
  /* style */
@@ -117,7 +117,7 @@ var script = {
117
117
  const __vue_script__ = script;
118
118
 
119
119
  /* template */
120
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-flex gl-flex-col",class:_vm.variantClasses},[_c('button',{staticClass:"gl-flex gl-w-full gl-items-center gl-border-0 gl-bg-transparent gl-p-0 gl-text-left gl-text-xs gl-lowercase gl-text-inherit",attrs:{"data-testid":"chat-context-selections-title","type":"button"},on:{"click":_vm.toggleCollapse}},[_c('gl-icon',{attrs:{"name":_vm.collapseIconName,"data-testid":"chat-context-collapse-icon"}}),_vm._v(" "+_vm._s(_vm.title)+"\n ")],1),_vm._v(" "),_c('div',{directives:[{name:"show",rawName:"v-show",value:(!_vm.isCollapsed),expression:"!isCollapsed"}],staticClass:"gl-mt-1 gl-flex gl-grow gl-flex-wrap",attrs:{"data-testid":"chat-context-tokens-wrapper"}},_vm._l((_vm.selections),function(item){return _c('gl-token',{key:item.id,staticClass:"gl-mb-2 gl-mr-2 gl-max-w-full",class:_vm.tokenVariantClasses,attrs:{"id":("context-item-" + (item.id) + "-" + _vm.selectionsId + "-token"),"view-only":!_vm.removable,"variant":"default","tabindex":_vm.canOpen(item) ? 0 : -1,"role":_vm.canOpen(item) ? 'button' : undefined},on:{"click":function($event){return _vm.onOpenItem($event, item)},"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }return _vm.onOpenItem($event, item)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"space",32,$event.key,[" ","Spacebar"])){ return null; }$event.preventDefault();return _vm.onOpenItem($event, item)}],"close":function($event){return _vm.onRemoveItem(item)}}},[_c('div',{staticClass:"gl-flex gl-min-w-0 gl-items-center",attrs:{"id":("context-item-" + (item.id) + "-" + _vm.selectionsId)}},[(item.metadata.icon)?_c('gl-icon',{staticClass:"gl-mr-1",attrs:{"name":item.metadata.icon,"size":12}}):_vm._e(),_vm._v(" "),_c('gl-truncate',{attrs:{"text":item.metadata.title,"position":"middle"}})],1),_vm._v(" "),_c('duo-chat-context-item-popover',{attrs:{"context-item":item,"target":("context-item-" + (item.id) + "-" + _vm.selectionsId + "-token"),"placement":"bottom"},on:{"show-git-diff":function($event){return _vm.onOpenItem(item)}}})],1)}),1),_vm._v(" "),(_vm.contextItemPreview)?_c('duo-chat-context-item-details-modal',{attrs:{"context-item":_vm.contextItemPreview},on:{"close":_vm.onClosePreview}}):_vm._e()],1)};
120
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-flex gl-flex-col",class:_vm.variantClasses},[_c('button',{staticClass:"gl-flex gl-w-full gl-items-center gl-border-0 gl-bg-transparent gl-p-0 gl-text-left gl-text-xs gl-lowercase gl-text-inherit",attrs:{"data-testid":"chat-context-selections-title","type":"button"},on:{"click":_vm.toggleCollapse}},[_c('gl-icon',{attrs:{"name":_vm.collapseIconName,"data-testid":"chat-context-collapse-icon"}}),_vm._v(" "+_vm._s(_vm.title)+"\n ")],1),_vm._v(" "),_c('div',{directives:[{name:"show",rawName:"v-show",value:(!_vm.isCollapsed),expression:"!isCollapsed"}],staticClass:"gl-mt-1 gl-flex gl-grow gl-flex-wrap",attrs:{"data-testid":"chat-context-tokens-wrapper"}},_vm._l((_vm.selections),function(item){return _c('gl-token',{key:item.id,staticClass:"gl-mb-2 gl-mr-2 gl-max-w-full",class:_vm.tokenVariantClasses,attrs:{"view-only":!_vm.removable,"variant":"default","tabindex":_vm.canOpen(item) ? 0 : -1,"role":_vm.canOpen(item) ? 'button' : undefined},on:{"click":function($event){return _vm.onOpenItem($event, item)},"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }return _vm.onOpenItem($event, item)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"space",32,$event.key,[" ","Spacebar"])){ return null; }$event.preventDefault();return _vm.onOpenItem($event, item)}],"close":function($event){return _vm.onRemoveItem(item)}}},[_c('div',{staticClass:"gl-flex gl-min-w-0 gl-items-center"},[(item.metadata.icon)?_c('gl-icon',{staticClass:"gl-mr-1",attrs:{"name":item.metadata.icon,"size":12}}):_vm._e(),_vm._v(" "),_c('gl-truncate',{attrs:{"id":("context-item-" + (item.id) + "-" + _vm.selectionsId + "-title"),"text":item.metadata.title,"position":"middle"}})],1),_vm._v(" "),_c('duo-chat-context-item-popover',{attrs:{"context-item":item,"target":("context-item-" + (item.id) + "-" + _vm.selectionsId + "-title"),"placement":"bottom"},on:{"show-git-diff":function($event){return _vm.onOpenItem(item)}}})],1)}),1),_vm._v(" "),(_vm.contextItemPreview)?_c('duo-chat-context-item-details-modal',{attrs:{"context-item":_vm.contextItemPreview},on:{"close":_vm.onClosePreview}}):_vm._e()],1)};
121
121
  var __vue_staticRenderFns__ = [];
122
122
 
123
123
  /* style */
@@ -1,5 +1,6 @@
1
1
  const CHAT_RESET_MESSAGE = '/reset';
2
2
  const CHAT_CLEAR_MESSAGE = '/clear';
3
+ const CHAT_NEW_MESSAGE = '/new';
3
4
  const CHAT_INCLUDE_MESSAGE = '/include';
4
5
  const LOADING_TRANSITION_DURATION = 7500;
5
6
  const DOCUMENTATION_SOURCE_TYPES = {
@@ -27,4 +28,4 @@ const SELECTED_CONTEXT_ITEMS_DEFAULT_COLLAPSED = true;
27
28
  const badgeTypes = ['experiment', 'beta', null];
28
29
  const badgeTypeValidator = value => badgeTypes.includes(value);
29
30
 
30
- export { CHAT_CLEAR_MESSAGE, CHAT_INCLUDE_MESSAGE, CHAT_RESET_MESSAGE, DOCUMENTATION_SOURCE_TYPES, LOADING_TRANSITION_DURATION, MESSAGE_MODEL_ROLES, SELECTED_CONTEXT_ITEMS_DEFAULT_COLLAPSED, badgeTypeValidator, badgeTypes };
31
+ export { CHAT_CLEAR_MESSAGE, CHAT_INCLUDE_MESSAGE, CHAT_NEW_MESSAGE, CHAT_RESET_MESSAGE, DOCUMENTATION_SOURCE_TYPES, LOADING_TRANSITION_DURATION, MESSAGE_MODEL_ROLES, SELECTED_CONTEXT_ITEMS_DEFAULT_COLLAPSED, badgeTypeValidator, badgeTypes };
@@ -2,7 +2,7 @@ import throttle from 'lodash/throttle';
2
2
  import VueResizable from 'vue-resizable';
3
3
  import { GlButton, GlAlert, GlFormInputGroup, GlFormTextarea, GlForm, GlExperimentBadge, GlCard, GlDropdownItem, GlSafeHtmlDirective } from '@gitlab/ui';
4
4
  import { translate } from '../../utils/i18n';
5
- import { badgeTypes, badgeTypeValidator, CHAT_RESET_MESSAGE, CHAT_INCLUDE_MESSAGE, MESSAGE_MODEL_ROLES, CHAT_CLEAR_MESSAGE } from './constants';
5
+ import { badgeTypes, badgeTypeValidator, CHAT_RESET_MESSAGE, CHAT_INCLUDE_MESSAGE, MESSAGE_MODEL_ROLES, CHAT_CLEAR_MESSAGE, CHAT_NEW_MESSAGE } from './constants';
6
6
  import DuoChatLoader from './components/duo_chat_loader/duo_chat_loader';
7
7
  import DuoChatPredefinedPrompts from './components/duo_chat_predefined_prompts/duo_chat_predefined_prompts';
8
8
  import DuoChatConversation from './components/duo_chat_conversation/duo_chat_conversation';
@@ -140,14 +140,6 @@ var script = {
140
140
  required: false,
141
141
  default: () => i18n.CHAT_DEFAULT_PREDEFINED_PROMPTS
142
142
  },
143
- /**
144
- * URL to the help page. This is passed down to the `GlExperimentBadge` component.
145
- */
146
- badgeHelpPageUrl: {
147
- type: String,
148
- required: false,
149
- default: ''
150
- },
151
143
  /**
152
144
  * The type of the badge. This is passed down to the `GlExperimentBadge` component. Refer that component for more information.
153
145
  */
@@ -237,19 +229,12 @@ var script = {
237
229
  caseInsensitivePrompt() {
238
230
  return this.prompt.toLowerCase().trim();
239
231
  },
240
- resetDisabled() {
241
- var _this$lastMessage;
242
- if (this.isLoading || !this.hasMessages) {
243
- return true;
244
- }
245
- return ((_this$lastMessage = this.lastMessage) === null || _this$lastMessage === void 0 ? void 0 : _this$lastMessage.content) === CHAT_RESET_MESSAGE;
246
- },
247
232
  isStreaming() {
248
- var _this$lastMessage2, _this$lastMessage3, _this$lastMessage3$ch, _this$lastMessage4, _this$lastMessage5;
249
- if (this.canceledRequestIds.includes((_this$lastMessage2 = this.lastMessage) === null || _this$lastMessage2 === void 0 ? void 0 : _this$lastMessage2.requestId)) {
233
+ var _this$lastMessage, _this$lastMessage2, _this$lastMessage2$ch, _this$lastMessage3, _this$lastMessage4;
234
+ if (this.canceledRequestIds.includes((_this$lastMessage = this.lastMessage) === null || _this$lastMessage === void 0 ? void 0 : _this$lastMessage.requestId)) {
250
235
  return false;
251
236
  }
252
- return Boolean(((_this$lastMessage3 = this.lastMessage) === null || _this$lastMessage3 === void 0 ? void 0 : (_this$lastMessage3$ch = _this$lastMessage3.chunks) === null || _this$lastMessage3$ch === void 0 ? void 0 : _this$lastMessage3$ch.length) > 0 && !((_this$lastMessage4 = this.lastMessage) !== null && _this$lastMessage4 !== void 0 && _this$lastMessage4.content) || typeof ((_this$lastMessage5 = this.lastMessage) === null || _this$lastMessage5 === void 0 ? void 0 : _this$lastMessage5.chunkId) === 'number');
237
+ return Boolean(((_this$lastMessage2 = this.lastMessage) === null || _this$lastMessage2 === void 0 ? void 0 : (_this$lastMessage2$ch = _this$lastMessage2.chunks) === null || _this$lastMessage2$ch === void 0 ? void 0 : _this$lastMessage2$ch.length) > 0 && !((_this$lastMessage3 = this.lastMessage) !== null && _this$lastMessage3 !== void 0 && _this$lastMessage3.content) || typeof ((_this$lastMessage4 = this.lastMessage) === null || _this$lastMessage4 === void 0 ? void 0 : _this$lastMessage4.chunkId) === 'number');
253
238
  },
254
239
  filteredSlashCommands() {
255
240
  return this.slashCommands.filter(c => c.name.toLowerCase().startsWith(this.caseInsensitivePrompt)).filter(c => {
@@ -345,14 +330,11 @@ var script = {
345
330
  return;
346
331
  }
347
332
  if (this.prompt) {
348
- if (this.caseInsensitivePrompt === CHAT_RESET_MESSAGE && this.resetDisabled) {
349
- return;
350
- }
351
333
  if (this.caseInsensitivePrompt.startsWith(CHAT_INCLUDE_MESSAGE) && this.hasContextItemSelectionMenu) {
352
334
  this.contextItemsMenuIsOpen = true;
353
335
  return;
354
336
  }
355
- if (![CHAT_RESET_MESSAGE, CHAT_CLEAR_MESSAGE].includes(this.caseInsensitivePrompt)) {
337
+ if (![CHAT_RESET_MESSAGE, CHAT_CLEAR_MESSAGE, CHAT_NEW_MESSAGE].includes(this.caseInsensitivePrompt)) {
356
338
  this.displaySubmitButton = false;
357
339
  }
358
340
 
@@ -517,7 +499,7 @@ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=
517
499
  'duo-chat-drawer': !_vm.shouldRenderResizable,
518
500
  },attrs:{"id":"chat-component","role":"complementary","data-testid":"chat-component"}},[(_vm.showHeader)?_c('header',{staticClass:"duo-chat-drawer-header duo-chat-drawer-header-sticky gl-border-0 gl-bg-default !gl-p-0",class:{
519
501
  'gl-z-200': !_vm.shouldRenderResizable,
520
- },attrs:{"data-testid":"chat-header"}},[_c('div',{staticClass:"drawer-title gl-flex gl-items-center gl-justify-start gl-p-5"},[_c('h3',{staticClass:"gl-my-0 gl-text-size-h2"},[_vm._v(_vm._s(_vm.title))]),_vm._v(" "),(_vm.badgeType)?_c('gl-experiment-badge',{attrs:{"help-page-url":_vm.badgeHelpPageUrl,"type":_vm.badgeType,"container-id":"chat-component"}}):_vm._e(),_vm._v(" "),_c('gl-button',{staticClass:"gl-ml-auto",attrs:{"category":"tertiary","variant":"default","icon":"close","size":"small","data-testid":"chat-close-button","aria-label":_vm.$options.i18n.CHAT_CLOSE_LABEL},on:{"click":_vm.hideChat}})],1),_vm._v(" "),_vm._t("subheader"),_vm._v(" "),(_vm.error)?_c('gl-alert',{key:"error",staticClass:"!gl-pl-9",attrs:{"dismissible":false,"variant":"danger","role":"alert","data-testid":"chat-error"}},[_c('span',{directives:[{name:"safe-html",rawName:"v-safe-html",value:(_vm.error),expression:"error"}]})]):_vm._e()],2):_vm._e(),_vm._v(" "),_c('div',{staticClass:"duo-chat-drawer-body gl-bg-default",attrs:{"data-testid":"chat-history"},on:{"scroll":_vm.handleScrollingTrottled}},[_c('transition-group',{staticClass:"duo-chat-history gl-flex gl-flex-col gl-justify-end",class:[
502
+ },attrs:{"data-testid":"chat-header"}},[_c('div',{staticClass:"drawer-title gl-flex gl-items-center gl-justify-start gl-p-5"},[_c('h3',{staticClass:"gl-my-0 gl-text-size-h2"},[_vm._v(_vm._s(_vm.title))]),_vm._v(" "),(_vm.badgeType)?_c('gl-experiment-badge',{attrs:{"type":_vm.badgeType,"container-id":"chat-component"}}):_vm._e(),_vm._v(" "),_c('gl-button',{staticClass:"gl-ml-auto",attrs:{"category":"tertiary","variant":"default","icon":"close","size":"small","data-testid":"chat-close-button","aria-label":_vm.$options.i18n.CHAT_CLOSE_LABEL},on:{"click":_vm.hideChat}})],1),_vm._v(" "),_vm._t("subheader"),_vm._v(" "),(_vm.error)?_c('gl-alert',{key:"error",staticClass:"!gl-pl-9",attrs:{"dismissible":false,"variant":"danger","role":"alert","data-testid":"chat-error"}},[_c('span',{directives:[{name:"safe-html",rawName:"v-safe-html",value:(_vm.error),expression:"error"}]})]):_vm._e()],2):_vm._e(),_vm._v(" "),_c('div',{staticClass:"duo-chat-drawer-body gl-bg-default",attrs:{"data-testid":"chat-history"},on:{"scroll":_vm.handleScrollingTrottled}},[_c('transition-group',{staticClass:"duo-chat-history gl-flex gl-flex-col gl-justify-end",class:[
521
503
  {
522
504
  'gl-h-full': !_vm.hasMessages,
523
505
  'force-scroll-bar': _vm.hasMessages,
@@ -113,7 +113,7 @@ var script = {
113
113
  const __vue_script__ = script;
114
114
 
115
115
  /* template */
116
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-modal',{ref:"feedbackModal",attrs:{"modal-id":"feedbackModal","title":_vm.modalTitle,"action-primary":_vm.$options.actions.primary,"action-cancel":_vm.$options.actions.cancel,"visible":false,"size":"sm"},on:{"primary":_vm.onFeedbackSubmit,"canceled":_vm.close}},[_c('p',[_vm._v(_vm._s(_vm.$options.i18n.MODAL.DESCRIPTION))]),_vm._v(" "),_c('gl-form-group',{attrs:{"invalid-feedback":_vm.$options.i18n.MODAL.REQUIRED_VALIDATION_ERROR,"state":_vm.isValid,"label":_vm.$options.i18n.MODAL.OPTIONS_LABEL,"data-testid":"feedback-options"}},[_c('gl-form-checkbox-group',{attrs:{"options":_vm.$options.feedbackOptions},model:{value:(_vm.selectedFeedbackOptions),callback:function ($$v) {_vm.selectedFeedbackOptions=$$v;},expression:"selectedFeedbackOptions"}})],1),_vm._v(" "),_c('gl-alert',{staticClass:"gl-mb-5",attrs:{"dismissible":false}},[_vm._v(_vm._s(_vm.modalAlert))]),_vm._v(" "),_vm._t("feedback-extra-fields",function(){return [_c('gl-form-group',{attrs:{"label":_vm.$options.i18n.MODAL.MORE_LABEL,"optional":""}},[_c('gl-form-textarea',{attrs:{"placeholder":_vm.$options.i18n.MODAL.MORE_PLACEHOLDER},model:{value:(_vm.extendedFeedback),callback:function ($$v) {_vm.extendedFeedback=$$v;},expression:"extendedFeedback"}})],1)]})],2)};
116
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-modal',{ref:"feedbackModal",attrs:{"modal-id":"feedbackModal","title":_vm.modalTitle,"action-primary":_vm.$options.actions.primary,"action-cancel":_vm.$options.actions.cancel,"visible":false,"size":"sm"},on:{"primary":_vm.onFeedbackSubmit,"canceled":_vm.close}},[_c('p',[_vm._v(_vm._s(_vm.$options.i18n.MODAL.DESCRIPTION))]),_vm._v(" "),_c('gl-form-group',{attrs:{"invalid-feedback":_vm.$options.i18n.MODAL.REQUIRED_VALIDATION_ERROR,"state":_vm.isValid,"label":_vm.$options.i18n.MODAL.OPTIONS_LABEL,"label-for":"feedback-options-checkbox-group","data-testid":"feedback-options"}},[_c('gl-form-checkbox-group',{attrs:{"id":"feedback-options-checkbox-group","options":_vm.$options.feedbackOptions},model:{value:(_vm.selectedFeedbackOptions),callback:function ($$v) {_vm.selectedFeedbackOptions=$$v;},expression:"selectedFeedbackOptions"}})],1),_vm._v(" "),_c('gl-alert',{staticClass:"gl-mb-5",attrs:{"dismissible":false}},[_vm._v(_vm._s(_vm.modalAlert))]),_vm._v(" "),_vm._t("feedback-extra-fields",function(){return [_c('gl-form-group',{attrs:{"label":_vm.$options.i18n.MODAL.MORE_LABEL,"optional":""}},[_c('gl-form-textarea',{attrs:{"placeholder":_vm.$options.i18n.MODAL.MORE_PLACEHOLDER},model:{value:(_vm.extendedFeedback),callback:function ($$v) {_vm.extendedFeedback=$$v;},expression:"extendedFeedback"}})],1)]})],2)};
117
117
  var __vue_staticRenderFns__ = [];
118
118
 
119
119
  /* style */
package/dist/index.js CHANGED
@@ -1,3 +1,13 @@
1
1
  export { default as DuoUserFeedback } from './components/user_feedback/user_feedback';
2
+ export { default as DuoWorkflowPanel } from './components/workflow/components/duo_workflow_panel/duo_workflow_panel';
3
+ export { default as DuoWorkflowPrompt } from './components/workflow/components/duo_workflow_prompt/duo_workflow_prompt';
2
4
  export { default as DuoChat } from './components/chat/duo_chat';
5
+ export { default as DuoChatContextConversation } from './components/chat/components/duo_chat_conversation/duo_chat_conversation';
6
+ export { default as DuoChatLoader } from './components/chat/components/duo_chat_loader/duo_chat_loader';
7
+ export { default as DuoChatMessage } from './components/chat/components/duo_chat_message/duo_chat_message';
8
+ export { default as DuoChatMessageSources } from './components/chat/components/duo_chat_message_sources/duo_chat_message_sources';
9
+ export { default as DuoChatPredefinedPrompts } from './components/chat/components/duo_chat_predefined_prompts/duo_chat_predefined_prompts';
10
+ export { default as DuoChatContextItemDetailsModal } from './components/chat/components/duo_chat_context/duo_chat_context_item_details_modal/duo_chat_context_item_details_modal';
3
11
  export { default as DuoChatContextItemMenu } from './components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu';
12
+ export { default as DuoChatContextItemPopover } from './components/chat/components/duo_chat_context/duo_chat_context_item_popover/duo_chat_context_item_popover';
13
+ export { default as DuoChatContextItemSelections } from './components/chat/components/duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections';
package/dist/tailwind.css CHANGED
@@ -1,2 +1,2 @@
1
- *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.gl-animate-skeleton-loader{background-color:var(--gl-skeleton-loader-background-color);background-image:linear-gradient(to right,var(--gl-skeleton-loader-background-color) 0,var(--gl-skeleton-loader-shimmer-color) 23%,var(--gl-skeleton-loader-shimmer-color) 27%,var(--gl-skeleton-loader-background-color) 50%);background-position:-32rem 0;background-repeat:no-repeat;background-size:32rem 100%;max-width:32rem;overflow:hidden}@media (prefers-reduced-motion:no-preference){.gl-animate-skeleton-loader{animation:gl-keyframes-skeleton-loader 2.5s linear;animation-delay:inherit;animation-iteration-count:3}}@keyframes gl-keyframes-skeleton-loader{0%{background-position-x:-32rem}to{background-position-x:32rem}}.gl-border{border-color:var(--gl-border-color-default);border-style:solid}.gl-border-t{border-top-color:var(--gl-border-color-default);border-top-style:solid}.gl-border-b{border-bottom-color:var(--gl-border-color-default);border-bottom-style:solid}.gl-heading-4{font-size:1rem}.gl-heading-3,.gl-heading-4{color:var(--gl-text-color-heading);font-weight:600;letter-spacing:inherit;line-height:1.25;margin-bottom:1rem;margin-top:0}.gl-heading-3{font-size:clamp(1.125rem,.9027777778rem + .462962963vw,1.25rem)}.gl-sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.gl-pointer-events-none{pointer-events:none}.gl-pointer-events-auto{pointer-events:auto}.gl-invisible{visibility:hidden}.gl-collapse{visibility:collapse}.gl-static{position:static}.gl-fixed{position:fixed}.\!gl-absolute{position:absolute!important}.gl-absolute{position:absolute}.gl-relative{position:relative}.gl-sticky{position:sticky}.gl-bottom-0{bottom:0}.gl-bottom-2{bottom:.25rem}.gl-left-0{left:0}.gl-right-2{right:.25rem}.gl-top-0{top:0}.\!gl-z-9999{z-index:9999!important}.gl-z-200{z-index:200}.gl-z-9999{z-index:9999}.gl-float-right{float:right}.\!gl-m-0{margin:0!important}.gl-m-0{margin:0}.gl-m-3{margin:.5rem}.gl-m-auto{margin:auto}.\!gl-mx-2{margin-left:.25rem!important;margin-right:.25rem!important}.-gl-mx-1{margin-left:-.125rem;margin-right:-.125rem}.-gl-mx-4{margin-left:-.75rem;margin-right:-.75rem}.-gl-my-1{margin-bottom:-.125rem;margin-top:-.125rem}.-gl-my-3{margin-bottom:-.5rem;margin-top:-.5rem}.gl-mx-2{margin-left:.25rem;margin-right:.25rem}.gl-mx-3{margin-left:.5rem;margin-right:.5rem}.gl-mx-4{margin-left:.75rem;margin-right:.75rem}.gl-mx-auto{margin-left:auto;margin-right:auto}.gl-my-0{margin-bottom:0;margin-top:0}.gl-my-3{margin-bottom:.5rem;margin-top:.5rem}.gl-my-5{margin-bottom:1rem;margin-top:1rem}.\!gl-mb-4{margin-bottom:.75rem!important}.-gl-ml-2{margin-left:-.25rem}.-gl-mr-3{margin-right:-.5rem}.-gl-mt-2{margin-top:-.25rem}.gl-mb-0{margin-bottom:0}.gl-mb-1{margin-bottom:.125rem}.gl-mb-2{margin-bottom:.25rem}.gl-mb-3{margin-bottom:.5rem}.gl-mb-4{margin-bottom:.75rem}.gl-mb-5{margin-bottom:1rem}.gl-ml-1{margin-left:.125rem}.gl-ml-2{margin-left:.25rem}.gl-ml-3{margin-left:.5rem}.gl-ml-5{margin-left:1rem}.gl-ml-6{margin-left:1.5rem}.gl-ml-7{margin-left:2rem}.gl-ml-auto{margin-left:auto}.gl-mr-1{margin-right:.125rem}.gl-mr-2{margin-right:.25rem}.gl-mr-3{margin-right:.5rem}.gl-mr-auto{margin-right:auto}.gl-mt-0{margin-top:0}.gl-mt-1{margin-top:.125rem}.gl-mt-2{margin-top:.25rem}.gl-mt-3{margin-top:.5rem}.gl-mt-4{margin-top:.75rem}.gl-mt-5{margin-top:1rem}.\!gl-block{display:block!important}.gl-block{display:block}.gl-inline-block{display:inline-block}.gl-flex{display:flex}.gl-inline-flex{display:inline-flex}.gl-table{display:table}.gl-grid{display:grid}.gl-hidden{display:none}.\!gl-h-full{height:100%!important}.gl-h-0{height:0}.gl-h-4{height:.75rem}.gl-h-5{height:1rem}.gl-h-auto{height:auto}.gl-h-full{height:100%}.gl-max-h-31{max-height:15.5rem}.gl-max-h-full{max-height:100%}.gl-min-h-8{min-height:2.5rem}.\!gl-w-31{width:15.5rem!important}.\!gl-w-auto{width:auto!important}.gl-w-1\/2{width:50%}.gl-w-3\/4{width:75%}.gl-w-4\/10{width:40%}.gl-w-5{width:1rem}.gl-w-full{width:100%}.gl-min-w-0{min-width:0}.gl-min-w-\[33\%\]{min-width:33%}.gl-max-w-1\/2{max-width:50%}.gl-max-w-full{max-width:100%}.gl-flex-auto{flex:1 1 auto}.gl-flex-shrink-0,.gl-shrink-0{flex-shrink:0}.gl-flex-grow,.gl-grow{flex-grow:1}.gl-basis-0{flex-basis:0}.-gl-translate-y-full{--tw-translate-y:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\!gl-cursor-not-allowed{cursor:not-allowed!important}.\!gl-cursor-text{cursor:text!important}.gl-cursor-default{cursor:default}.gl-cursor-not-allowed{cursor:not-allowed}.gl-cursor-pointer{cursor:pointer}.gl-cursor-text{cursor:text}.gl-list-none{list-style-type:none}.gl-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.gl-flex-row{flex-direction:row}.gl-flex-row-reverse{flex-direction:row-reverse}.gl-flex-col{flex-direction:column}.gl-flex-wrap{flex-wrap:wrap}.gl-flex-nowrap{flex-wrap:nowrap}.gl-content-center{align-content:center}.gl-items-start{align-items:flex-start}.gl-items-end{align-items:flex-end}.gl-items-center{align-items:center}.gl-items-baseline{align-items:baseline}.\!gl-justify-start{justify-content:flex-start!important}.gl-justify-start{justify-content:flex-start}.gl-justify-end{justify-content:flex-end}.gl-justify-center{justify-content:center}.gl-justify-between{justify-content:space-between}.gl-gap-3{gap:.5rem}.gl-gap-4{gap:.75rem}.gl-gap-5{gap:1rem}.gl-divide-x-0>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(0px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(0px*var(--tw-divide-x-reverse))}.gl-divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.gl-divide-solid>:not([hidden])~:not([hidden]){border-style:solid}.gl-divide-default>:not([hidden])~:not([hidden]){border-color:var(--gl-border-color-default,var(--gl-color-neutral-100,#dcdcde))}.gl-self-start{align-self:flex-start}.gl-self-center{align-self:center}.gl-overflow-hidden{overflow:hidden}.\!gl-overflow-visible{overflow:visible!important}.gl-overflow-visible{overflow:visible}.gl-overflow-y-auto{overflow-y:auto}.gl-overflow-x-hidden{overflow-x:hidden}.gl-overflow-y-scroll{overflow-y:scroll}.gl-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\!gl-text-ellipsis{text-overflow:ellipsis!important}.gl-text-ellipsis{text-overflow:ellipsis}.\!gl-whitespace-normal{white-space:normal!important}.gl-whitespace-normal{white-space:normal}.gl-whitespace-nowrap{white-space:nowrap}.gl-break-words{overflow-wrap:break-word}.gl-break-all{word-break:break-all}.\!gl-rounded-base{border-radius:.25rem!important}.\!gl-rounded-full{border-radius:50%!important}.\!gl-rounded-none{border-radius:0!important}.gl-rounded-base{border-radius:.25rem}.gl-rounded-full{border-radius:50%}.gl-rounded-t-base{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.gl-rounded-bl-none{border-bottom-left-radius:0}.gl-rounded-br-none{border-bottom-right-radius:0}.gl-rounded-tr-none{border-top-right-radius:0}.gl-border{border-width:1px}.gl-border-0{border-width:0}.gl-border-1{border-width:1px}.\!gl-border-b-0{border-bottom-width:0!important}.gl-border-b,.gl-border-b-1{border-bottom-width:1px}.gl-border-t,.gl-border-t-1{border-top-width:1px}.gl-border-t-2{border-top-width:2px}.gl-border-solid{border-style:solid}.gl-border-dashed{border-style:dashed}.gl-border-none{border-style:none}.gl-border-dropdown{border-color:var(--gl-dropdown-border-color,var(--gl-color-neutral-200,#bfbfc3))}.gl-border-gray-50{border-color:var(--gray-50,#ececef)}.gl-border-gray-500{border-color:var(--gray-500,#737278)}.gl-border-red-500{border-color:var(--red-500,#dd2b0e)}.gl-border-transparent{border-color:var(--gl-border-color-transparent,var(--gl-color-alpha-0,#0000))}.gl-border-b-dropdown{border-bottom-color:var(--gl-dropdown-border-color,var(--gl-color-neutral-200,#bfbfc3))}.gl-border-t-dropdown{border-top-color:var(--gl-dropdown-border-color,var(--gl-color-neutral-200,#bfbfc3))}.\!gl-bg-gray-10{background-color:var(--gray-10,#fbfafd)!important}.\!gl-bg-transparent{background-color:initial!important}.gl-bg-blue-100{background-color:var(--blue-100,#cbe2f9)}.gl-bg-blue-50{background-color:var(--blue-50,#e9f3fc)}.gl-bg-default{background-color:var(--gl-background-color-default,var(--gl-color-neutral-0,#fff))}.gl-bg-dropdown{background-color:var(--gl-dropdown-background-color,var(--gl-background-color-overlap,#fff))}.gl-bg-gray-10{background-color:var(--gray-10,#fbfafd)}.gl-bg-gray-50{background-color:var(--gray-50,#ececef)}.gl-bg-red-50{background-color:var(--red-50,#fcf1ef)}.gl-bg-status-neutral{background-color:var(--gl-status-neutral-background-color,var(--gl-color-neutral-100,#dcdcde))}.gl-bg-subtle{background-color:var(--gl-background-color-subtle,var(--gl-color-neutral-10,#fbfafd))}.gl-bg-transparent{background-color:initial}.gl-bg-white{background-color:var(--white,#fff)}.gl-fill-current{fill:currentColor}.gl-fill-gray-100{fill:var(--gray-100,#dcdcde)}.gl-fill-icon-danger{fill:var(--gl-icon-color-danger,var(--gl-color-red-600,#c91c00))}.gl-fill-icon-default{fill:var(--gl-icon-color-default,var(--gl-color-neutral-700,#4c4b51))}.gl-fill-icon-disabled{fill:var(--gl-icon-color-disabled,var(--gl-color-neutral-300,#a4a3a8))}.gl-fill-icon-info{fill:var(--gl-icon-color-info,var(--gl-color-blue-600,#1068bf))}.gl-fill-icon-link{fill:var(--gl-icon-color-link,var(--gl-color-blue-600,#1068bf))}.gl-fill-icon-strong{fill:var(--gl-icon-color-strong,var(--gl-color-neutral-900,#28272d))}.gl-fill-icon-subtle{fill:var(--gl-icon-color-subtle,var(--gl-color-neutral-500,#737278))}.gl-fill-icon-success{fill:var(--gl-icon-color-success,var(--gl-color-green-600,#217645))}.gl-fill-icon-warning{fill:var(--gl-icon-color-warning,var(--gl-color-orange-600,#9e5400))}.\!gl-p-0{padding:0!important}.\!gl-p-2{padding:.25rem!important}.\!gl-p-4{padding:.75rem!important}.gl-p-0{padding:0}.gl-p-1{padding:.125rem}.gl-p-2{padding:.25rem}.gl-p-3{padding:.5rem}.gl-p-4{padding:.75rem}.gl-p-5{padding:1rem}.\!gl-px-2{padding-left:.25rem!important;padding-right:.25rem!important}.\!gl-px-3{padding-left:.5rem!important;padding-right:.5rem!important}.\!gl-py-2{padding-bottom:.25rem!important;padding-top:.25rem!important}.\!gl-py-4{padding-bottom:.75rem!important;padding-top:.75rem!important}.gl-px-1{padding-left:.125rem;padding-right:.125rem}.gl-px-2{padding-left:.25rem;padding-right:.25rem}.gl-px-3{padding-left:.5rem;padding-right:.5rem}.gl-px-4{padding-left:.75rem;padding-right:.75rem}.gl-px-5{padding-left:1rem;padding-right:1rem}.gl-py-2{padding-bottom:.25rem;padding-top:.25rem}.gl-py-3{padding-bottom:.5rem;padding-top:.5rem}.gl-py-4{padding-bottom:.75rem;padding-top:.75rem}.gl-py-5{padding-bottom:1rem;padding-top:1rem}.gl-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.\!gl-pl-9{padding-left:3rem!important}.\!gl-pr-7{padding-right:2rem!important}.\!gl-pr-9{padding-right:3rem!important}.\!gl-pt-0{padding-top:0!important}.gl-pb-2{padding-bottom:.25rem}.gl-pb-3{padding-bottom:.5rem}.gl-pl-0{padding-left:0}.gl-pl-2{padding-left:.25rem}.gl-pl-3{padding-left:.5rem}.gl-pl-4{padding-left:.75rem}.gl-pl-5{padding-left:1rem}.gl-pl-6{padding-left:1.5rem}.gl-pl-7{padding-left:2rem}.gl-pr-2{padding-right:.25rem}.gl-pr-5{padding-right:1rem}.gl-pr-6{padding-right:1.5rem}.gl-pr-8{padding-right:2.5rem}.gl-pt-1{padding-top:.125rem}.gl-pt-2{padding-top:.25rem}.gl-pt-3{padding-top:.5rem}.gl-pt-4{padding-top:.75rem}.\!gl-text-left{text-align:left!important}.gl-text-left{text-align:left}.gl-text-center{text-align:center}.gl-text-right{text-align:right}.gl-align-top{vertical-align:top}.gl-align-middle{vertical-align:middle}.gl-align-bottom{vertical-align:bottom}.\!gl-align-text-bottom{vertical-align:text-bottom!important}.gl-font-regular{font-family:var(--default-regular-font,"GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\!gl-text-sm{font-size:.75rem!important}.gl-text-base{font-size:.875rem}.gl-text-size-h-display{font-size:1.75rem}.gl-text-size-h2{font-size:1.1875rem}.gl-text-sm{font-size:.75rem}.gl-text-xs{font-size:.625rem}.gl-font-bold{font-weight:600}.gl-font-normal{font-weight:400}.gl-lowercase{text-transform:lowercase}.gl-italic{font-style:italic}.gl-leading-1{line-height:1}.gl-leading-20{line-height:1.25rem}.gl-leading-36{line-height:2.25rem}.gl-leading-normal{line-height:1rem}.\!gl-text-red-500{color:var(--red-500,#dd2b0e)!important}.\!gl-text-subtle{color:var(--gl-text-color-subtle,var(--gl-color-neutral-600,#626168))!important}.gl-text-blue-100{color:var(--blue-100,#cbe2f9)}.gl-text-blue-500{color:var(--blue-500,#1f75cb)}.gl-text-blue-600{color:var(--blue-600,#1068bf)}.gl-text-blue-700{color:var(--blue-700,#0b5cad)}.gl-text-blue-900{color:var(--blue-900,#033464)}.gl-text-danger{color:var(--gl-text-color-danger,var(--gl-color-red-600,#c91c00))}.gl-text-default{color:var(--gl-text-color-default,var(--gl-color-neutral-800,#3a383f))}.gl-text-gray-400{color:var(--gray-400,#89888d)}.gl-text-gray-500{color:var(--gray-500,#737278)}.gl-text-gray-600{color:var(--gray-600,#626168)}.gl-text-gray-700{color:var(--gray-700,#4c4b51)}.gl-text-gray-900{color:var(--gray-900,#28272d)}.gl-text-gray-950{color:var(--gray-950,#18171d)}.gl-text-green-500{color:var(--green-500,#108548)}.gl-text-inherit{color:inherit}.gl-text-orange-500{color:var(--orange-500,#ab6100)}.gl-text-red-500{color:var(--red-500,#dd2b0e)}.gl-text-red-600{color:var(--red-600,#c91c00)}.gl-text-secondary{color:var(--gl-text-secondary,#737278)}.gl-text-strong{color:var(--gl-text-color-strong,var(--gl-color-neutral-950,#18171d))}.gl-text-subtle{color:var(--gl-text-color-subtle,var(--gl-color-neutral-600,#626168))}.gl-text-white{color:var(--white,#fff)}.\!gl-opacity-0{opacity:0!important}.gl-opacity-10{opacity:1}.\!gl-shadow-inner-1-gray-100{--tw-shadow:inset 0 0 0 1px var(--gray-100,#dcdcde)!important;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)!important}.\!gl-shadow-inner-1-gray-100,.\!gl-shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.\!gl-shadow-none{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important}.gl-shadow-md{--tw-shadow:0 0 1px var(--gl-shadow-color-default,#05050629),0 0 2px var(--gl-shadow-color-default,#05050629),0 2px 8px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 0 1px var(--tw-shadow-color),0 0 2px var(--tw-shadow-color),0 2px 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-outline-none{outline:2px solid #0000;outline-offset:2px}.gl-transition-all{transition-duration:.2s;transition-property:all;transition-timing-function:ease}.gl-break-anywhere{overflow-wrap:anywhere;word-break:normal}.gl-border-b-solid{border-bottom-style:solid}.gl-border-t-solid{border-top-style:solid}.focus-within\:\!gl-shadow-none:focus-within{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.hover\:\!gl-cursor-not-allowed:hover{cursor:not-allowed!important}.hover\:gl-cursor-pointer:hover{cursor:pointer}.focus\:\!gl-shadow-inner-2-blue-400:focus{--tw-shadow:inset 0 0 0 2px var(--blue-400,#428fdc)!important;--tw-shadow-colored:inset 0 0 0 2px var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}@media (min-width:576px){.sm\:gl-block{display:block}.sm\:gl-flex{display:flex}.sm\:\!gl-hidden{display:none!important}.sm\:gl-flex-nowrap{flex-wrap:nowrap}.sm\:gl-gap-3{gap:.5rem}}.\[\&\>button\]\:focus-within\:\!gl-shadow-none:focus-within>button{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}
1
+ *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.gl-animate-skeleton-loader{background-color:var(--gl-skeleton-loader-background-color);background-image:linear-gradient(to right,var(--gl-skeleton-loader-background-color) 0,var(--gl-skeleton-loader-shimmer-color) 23%,var(--gl-skeleton-loader-shimmer-color) 27%,var(--gl-skeleton-loader-background-color) 50%);background-position:-32rem 0;background-repeat:no-repeat;background-size:32rem 100%;max-width:32rem;overflow:hidden}@media (prefers-reduced-motion:no-preference){.gl-animate-skeleton-loader{animation:gl-keyframes-skeleton-loader 2.5s linear;animation-delay:inherit;animation-iteration-count:3}}@keyframes gl-keyframes-skeleton-loader{0%{background-position-x:-32rem}to{background-position-x:32rem}}.gl-border{border-color:var(--gl-border-color-default);border-style:solid}.gl-border-t{border-top-color:var(--gl-border-color-default);border-top-style:solid}.gl-border-b{border-bottom-color:var(--gl-border-color-default);border-bottom-style:solid}.gl-heading-4{font-size:1rem}.gl-heading-3,.gl-heading-4{color:var(--gl-text-color-heading);font-weight:600;letter-spacing:inherit;line-height:1.25;margin-bottom:1rem;margin-top:0}.gl-heading-3{font-size:clamp(1.125rem,.9027777778rem + .462962963vw,1.25rem)}.gl-sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.gl-pointer-events-none{pointer-events:none}.gl-pointer-events-auto{pointer-events:auto}.gl-invisible{visibility:hidden}.gl-collapse{visibility:collapse}.gl-static{position:static}.gl-fixed{position:fixed}.\!gl-absolute{position:absolute!important}.gl-absolute{position:absolute}.gl-relative{position:relative}.gl-sticky{position:sticky}.gl-bottom-0{bottom:0}.gl-bottom-2{bottom:.25rem}.gl-left-0{left:0}.gl-right-2{right:.25rem}.gl-top-0{top:0}.\!gl-z-9999{z-index:9999!important}.gl-z-200{z-index:200}.gl-z-9999{z-index:9999}.gl-float-right{float:right}.\!gl-m-0{margin:0!important}.gl-m-0{margin:0}.gl-m-3{margin:.5rem}.gl-m-auto{margin:auto}.\!gl-mx-2{margin-left:.25rem!important;margin-right:.25rem!important}.-gl-mx-1{margin-left:-.125rem;margin-right:-.125rem}.-gl-mx-4{margin-left:-.75rem;margin-right:-.75rem}.-gl-my-1{margin-bottom:-.125rem;margin-top:-.125rem}.-gl-my-3{margin-bottom:-.5rem;margin-top:-.5rem}.gl-mx-2{margin-left:.25rem;margin-right:.25rem}.gl-mx-3{margin-left:.5rem;margin-right:.5rem}.gl-mx-4{margin-left:.75rem;margin-right:.75rem}.gl-mx-auto{margin-left:auto;margin-right:auto}.gl-my-0{margin-bottom:0;margin-top:0}.gl-my-3{margin-bottom:.5rem;margin-top:.5rem}.gl-my-5{margin-bottom:1rem;margin-top:1rem}.\!gl-mb-0{margin-bottom:0!important}.\!gl-mb-4{margin-bottom:.75rem!important}.-gl-ml-2{margin-left:-.25rem}.-gl-mr-3{margin-right:-.5rem}.-gl-mt-2{margin-top:-.25rem}.gl-mb-0{margin-bottom:0}.gl-mb-1{margin-bottom:.125rem}.gl-mb-2{margin-bottom:.25rem}.gl-mb-3{margin-bottom:.5rem}.gl-mb-4{margin-bottom:.75rem}.gl-mb-5{margin-bottom:1rem}.gl-ml-1{margin-left:.125rem}.gl-ml-2{margin-left:.25rem}.gl-ml-3{margin-left:.5rem}.gl-ml-5{margin-left:1rem}.gl-ml-6{margin-left:1.5rem}.gl-ml-7{margin-left:2rem}.gl-ml-auto{margin-left:auto}.gl-mr-1{margin-right:.125rem}.gl-mr-2{margin-right:.25rem}.gl-mr-3{margin-right:.5rem}.gl-mr-auto{margin-right:auto}.gl-mt-0{margin-top:0}.gl-mt-1{margin-top:.125rem}.gl-mt-2{margin-top:.25rem}.gl-mt-3{margin-top:.5rem}.gl-mt-4{margin-top:.75rem}.gl-mt-5{margin-top:1rem}.\!gl-block{display:block!important}.gl-block{display:block}.gl-inline-block{display:inline-block}.gl-flex{display:flex}.gl-inline-flex{display:inline-flex}.gl-table{display:table}.gl-hidden{display:none}.\!gl-h-full{height:100%!important}.gl-h-0{height:0}.gl-h-4{height:.75rem}.gl-h-5{height:1rem}.gl-h-auto{height:auto}.gl-h-full{height:100%}.gl-max-h-13{max-height:6rem}.gl-max-h-31{max-height:15.5rem}.gl-max-h-full{max-height:100%}.gl-min-h-8{min-height:2.5rem}.\!gl-w-31{width:15.5rem!important}.\!gl-w-auto{width:auto!important}.gl-w-1\/2{width:50%}.gl-w-3\/4{width:75%}.gl-w-4\/10{width:40%}.gl-w-5{width:1rem}.gl-w-full{width:100%}.gl-min-w-0{min-width:0}.gl-min-w-\[33\%\]{min-width:33%}.gl-max-w-1\/2{max-width:50%}.gl-max-w-full{max-width:100%}.gl-flex-auto{flex:1 1 auto}.gl-flex-shrink-0,.gl-shrink-0{flex-shrink:0}.gl-flex-grow,.gl-grow{flex-grow:1}.gl-basis-0{flex-basis:0}.-gl-translate-y-full{--tw-translate-y:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\!gl-cursor-not-allowed{cursor:not-allowed!important}.\!gl-cursor-text{cursor:text!important}.gl-cursor-default{cursor:default}.gl-cursor-not-allowed{cursor:not-allowed}.gl-cursor-pointer{cursor:pointer}.gl-cursor-text{cursor:text}.gl-list-none{list-style-type:none}.gl-flex-row{flex-direction:row}.gl-flex-col{flex-direction:column}.gl-flex-wrap{flex-wrap:wrap}.gl-flex-nowrap{flex-wrap:nowrap}.gl-content-center{align-content:center}.gl-items-start{align-items:flex-start}.gl-items-end{align-items:flex-end}.gl-items-center{align-items:center}.gl-items-baseline{align-items:baseline}.\!gl-justify-start{justify-content:flex-start!important}.gl-justify-start{justify-content:flex-start}.gl-justify-end{justify-content:flex-end}.gl-justify-center{justify-content:center}.gl-justify-between{justify-content:space-between}.gl-gap-3{gap:.5rem}.gl-gap-4{gap:.75rem}.gl-gap-5{gap:1rem}.gl-self-start{align-self:flex-start}.gl-self-center{align-self:center}.gl-overflow-hidden{overflow:hidden}.\!gl-overflow-visible{overflow:visible!important}.gl-overflow-visible{overflow:visible}.gl-overflow-y-auto{overflow-y:auto}.gl-overflow-x-hidden{overflow-x:hidden}.gl-overflow-y-scroll{overflow-y:scroll}.gl-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\!gl-text-ellipsis{text-overflow:ellipsis!important}.gl-text-ellipsis{text-overflow:ellipsis}.\!gl-whitespace-normal{white-space:normal!important}.gl-whitespace-normal{white-space:normal}.gl-whitespace-nowrap{white-space:nowrap}.gl-break-words{overflow-wrap:break-word}.gl-break-all{word-break:break-all}.\!gl-rounded-base{border-radius:.25rem!important}.\!gl-rounded-full{border-radius:50%!important}.\!gl-rounded-none{border-radius:0!important}.gl-rounded-base{border-radius:.25rem}.gl-rounded-full{border-radius:50%}.gl-rounded-t-base{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.gl-rounded-bl-none{border-bottom-left-radius:0}.gl-rounded-br-none{border-bottom-right-radius:0}.gl-rounded-tr-none{border-top-right-radius:0}.gl-border{border-width:1px}.gl-border-0{border-width:0}.gl-border-1{border-width:1px}.\!gl-border-b-0{border-bottom-width:0!important}.gl-border-b,.gl-border-b-1{border-bottom-width:1px}.gl-border-t,.gl-border-t-1{border-top-width:1px}.gl-border-t-2{border-top-width:2px}.gl-border-solid{border-style:solid}.gl-border-dashed{border-style:dashed}.gl-border-none{border-style:none}.gl-border-dropdown{border-color:var(--gl-dropdown-border-color,var(--gl-border-color-strong,#bfbfc3))}.gl-border-gray-50{border-color:var(--gray-50,#ececef)}.gl-border-gray-500{border-color:var(--gray-500,#737278)}.gl-border-red-500{border-color:var(--red-500,#dd2b0e)}.gl-border-transparent{border-color:var(--gl-border-color-transparent,var(--gl-color-alpha-0,#0000))}.gl-border-b-dropdown-divider{border-bottom-color:var(--gl-dropdown-divider-color,var(--gl-border-color-default,#dcdcde))}.gl-border-t-dropdown-divider{border-top-color:var(--gl-dropdown-divider-color,var(--gl-border-color-default,#dcdcde))}.\!gl-bg-gray-10{background-color:var(--gray-10,#fbfafd)!important}.\!gl-bg-transparent{background-color:initial!important}.gl-bg-blue-100{background-color:var(--blue-100,#cbe2f9)}.gl-bg-blue-50{background-color:var(--blue-50,#e9f3fc)}.gl-bg-default{background-color:var(--gl-background-color-default,var(--gl-color-neutral-0,#fff))}.gl-bg-dropdown{background-color:var(--gl-dropdown-background-color,var(--gl-background-color-overlap,#fff))}.gl-bg-gray-10{background-color:var(--gray-10,#fbfafd)}.gl-bg-gray-50{background-color:var(--gray-50,#ececef)}.gl-bg-red-50{background-color:var(--red-50,#fcf1ef)}.gl-bg-status-neutral{background-color:var(--gl-status-neutral-background-color,var(--gl-color-neutral-100,#dcdcde))}.gl-bg-subtle{background-color:var(--gl-background-color-subtle,var(--gl-color-neutral-10,#fbfafd))}.gl-bg-transparent{background-color:initial}.gl-bg-white{background-color:var(--white,#fff)}.gl-fill-current{fill:currentColor}.gl-fill-gray-100{fill:var(--gray-100,#dcdcde)}.gl-fill-icon-danger{fill:var(--gl-icon-color-danger,var(--gl-color-red-600,#c91c00))}.gl-fill-icon-default{fill:var(--gl-icon-color-default,var(--gl-color-neutral-700,#4c4b51))}.gl-fill-icon-disabled{fill:var(--gl-icon-color-disabled,var(--gl-color-neutral-300,#a4a3a8))}.gl-fill-icon-info{fill:var(--gl-icon-color-info,var(--gl-color-blue-700,#0b5cad))}.gl-fill-icon-link{fill:var(--gl-icon-color-link,var(--gl-color-blue-700,#0b5cad))}.gl-fill-icon-strong{fill:var(--gl-icon-color-strong,var(--gl-color-neutral-900,#28272d))}.gl-fill-icon-subtle{fill:var(--gl-icon-color-subtle,var(--gl-color-neutral-500,#737278))}.gl-fill-icon-success{fill:var(--gl-icon-color-success,var(--gl-color-green-600,#217645))}.gl-fill-icon-warning{fill:var(--gl-icon-color-warning,var(--gl-color-orange-600,#9e5400))}.\!gl-p-0{padding:0!important}.\!gl-p-2{padding:.25rem!important}.\!gl-p-4{padding:.75rem!important}.gl-p-0{padding:0}.gl-p-1{padding:.125rem}.gl-p-2{padding:.25rem}.gl-p-3{padding:.5rem}.gl-p-4{padding:.75rem}.gl-p-5{padding:1rem}.\!gl-px-2{padding-left:.25rem!important;padding-right:.25rem!important}.\!gl-px-3{padding-left:.5rem!important;padding-right:.5rem!important}.\!gl-py-2{padding-bottom:.25rem!important;padding-top:.25rem!important}.\!gl-py-4{padding-bottom:.75rem!important;padding-top:.75rem!important}.gl-px-1{padding-left:.125rem;padding-right:.125rem}.gl-px-2{padding-left:.25rem;padding-right:.25rem}.gl-px-3{padding-left:.5rem;padding-right:.5rem}.gl-px-4{padding-left:.75rem;padding-right:.75rem}.gl-px-5{padding-left:1rem;padding-right:1rem}.gl-py-2{padding-bottom:.25rem;padding-top:.25rem}.gl-py-3{padding-bottom:.5rem;padding-top:.5rem}.gl-py-5{padding-bottom:1rem;padding-top:1rem}.gl-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.\!gl-pl-9{padding-left:3rem!important}.\!gl-pr-7{padding-right:2rem!important}.\!gl-pr-9{padding-right:3rem!important}.\!gl-pt-0{padding-top:0!important}.gl-pb-2{padding-bottom:.25rem}.gl-pb-3{padding-bottom:.5rem}.gl-pl-0{padding-left:0}.gl-pl-2{padding-left:.25rem}.gl-pl-3{padding-left:.5rem}.gl-pl-4{padding-left:.75rem}.gl-pl-5{padding-left:1rem}.gl-pl-6{padding-left:1.5rem}.gl-pl-7{padding-left:2rem}.gl-pr-2{padding-right:.25rem}.gl-pr-5{padding-right:1rem}.gl-pr-6{padding-right:1.5rem}.gl-pr-8{padding-right:2.5rem}.gl-pt-1{padding-top:.125rem}.gl-pt-2{padding-top:.25rem}.gl-pt-3{padding-top:.5rem}.gl-pt-4{padding-top:.75rem}.\!gl-text-left{text-align:left!important}.gl-text-left{text-align:left}.gl-text-center{text-align:center}.gl-text-right{text-align:right}.gl-align-top{vertical-align:top}.gl-align-middle{vertical-align:middle}.gl-align-bottom{vertical-align:bottom}.\!gl-align-text-bottom{vertical-align:text-bottom!important}.gl-font-regular{font-family:var(--default-regular-font,"GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\!gl-text-sm{font-size:.75rem!important}.gl-text-base{font-size:.875rem}.gl-text-size-h-display{font-size:1.75rem}.gl-text-size-h2{font-size:1.1875rem}.gl-text-sm{font-size:.75rem}.gl-text-xs{font-size:.625rem}.gl-font-bold{font-weight:600}.gl-font-normal{font-weight:400}.gl-lowercase{text-transform:lowercase}.gl-italic{font-style:italic}.gl-leading-1{line-height:1}.gl-leading-20{line-height:1.25rem}.gl-leading-36{line-height:2.25rem}.gl-leading-normal{line-height:1rem}.\!gl-text-subtle{color:var(--gl-text-color-subtle,var(--gl-color-neutral-600,#626168))!important}.gl-text-blue-100{color:var(--blue-100,#cbe2f9)}.gl-text-blue-500{color:var(--blue-500,#1f75cb)}.gl-text-blue-600{color:var(--blue-600,#1068bf)}.gl-text-blue-700{color:var(--blue-700,#0b5cad)}.gl-text-blue-900{color:var(--blue-900,#033464)}.gl-text-danger{color:var(--gl-text-color-danger,var(--gl-color-red-600,#c91c00))}.gl-text-default{color:var(--gl-text-color-default,var(--gl-color-neutral-800,#3a383f))}.gl-text-gray-400{color:var(--gray-400,#89888d)}.gl-text-gray-500{color:var(--gray-500,#737278)}.gl-text-gray-600{color:var(--gray-600,#626168)}.gl-text-gray-700{color:var(--gray-700,#4c4b51)}.gl-text-gray-900{color:var(--gray-900,#28272d)}.gl-text-gray-950{color:var(--gray-950,#18171d)}.gl-text-green-500{color:var(--green-500,#108548)}.gl-text-inherit{color:inherit}.gl-text-orange-500{color:var(--orange-500,#ab6100)}.gl-text-red-500{color:var(--red-500,#dd2b0e)}.gl-text-red-600{color:var(--red-600,#c91c00)}.gl-text-secondary{color:var(--gl-text-secondary,#737278)}.gl-text-strong{color:var(--gl-text-color-strong,var(--gl-color-neutral-950,#18171d))}.gl-text-subtle{color:var(--gl-text-color-subtle,var(--gl-color-neutral-600,#626168))}.gl-text-white{color:var(--white,#fff)}.\!gl-opacity-0{opacity:0!important}.gl-opacity-10{opacity:1}.\!gl-shadow-inner-1-gray-100{--tw-shadow:inset 0 0 0 1px var(--gray-100,#dcdcde)!important;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)!important}.\!gl-shadow-inner-1-gray-100,.\!gl-shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.\!gl-shadow-none{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important}.gl-shadow-md{--tw-shadow:0 0 1px var(--gl-shadow-color-default,#05050629),0 0 2px var(--gl-shadow-color-default,#05050629),0 2px 8px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 0 1px var(--tw-shadow-color),0 0 2px var(--tw-shadow-color),0 2px 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-outline-none{outline:2px solid #0000;outline-offset:2px}.gl-transition-all{transition-duration:.2s;transition-property:all;transition-timing-function:ease}.gl-break-anywhere{overflow-wrap:anywhere;word-break:normal}.gl-border-b-solid{border-bottom-style:solid}.gl-border-t-solid{border-top-style:solid}.focus-within\:\!gl-shadow-none:focus-within{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.hover\:\!gl-cursor-not-allowed:hover{cursor:not-allowed!important}.hover\:gl-cursor-pointer:hover{cursor:pointer}.focus\:\!gl-shadow-inner-2-blue-400:focus{--tw-shadow:inset 0 0 0 2px var(--blue-400,#428fdc)!important;--tw-shadow-colored:inset 0 0 0 2px var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}@media (min-width:576px){.sm\:gl-block{display:block}.sm\:\!gl-hidden{display:none!important}.sm\:gl-flex-nowrap{flex-wrap:nowrap}.sm\:gl-gap-3{gap:.5rem}}.\[\&\>button\]\:focus-within\:\!gl-shadow-none:focus-within>button{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}
2
2
  /*# sourceMappingURL=tailwind.css.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["tailwind.css"],"names":[],"mappings":"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","file":"tailwind.css","sourcesContent":["@tailwind base;\n@tailwind components;\n@tailwind utilities;\n"]}
1
+ {"version":3,"sources":["tailwind.css"],"names":[],"mappings":"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","file":"tailwind.css","sourcesContent":["@tailwind base;\n@tailwind components;\n@tailwind utilities;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gitlab/duo-ui",
3
- "version": "6.0.1",
3
+ "version": "8.0.0",
4
4
  "description": "Duo UI Components",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -80,7 +80,7 @@
80
80
  },
81
81
  "peerDependencies": {
82
82
  "@gitlab/svgs": "^1.116.0 || ^2.0.0 || ^3.0.0",
83
- "@gitlab/ui": "^105.0.0",
83
+ "@gitlab/ui": ">=106.2.0",
84
84
  "bootstrap": ">=4.5.3 <=4.6.2",
85
85
  "dompurify": ">=2.5.2 <3.0.0 || >=3.1.2",
86
86
  "emoji-regex": ">=10.0.0",
@@ -105,7 +105,7 @@
105
105
  "@gitlab/fonts": "^1.3.0",
106
106
  "@gitlab/stylelint-config": "6.2.2",
107
107
  "@gitlab/svgs": "3.117.0",
108
- "@gitlab/ui": "^105.0.0",
108
+ "@gitlab/ui": "latest",
109
109
  "@jest/test-sequencer": "^29.7.0",
110
110
  "@rollup/plugin-commonjs": "^11.1.0",
111
111
  "@rollup/plugin-node-resolve": "^7.1.3",
@@ -1,6 +1,6 @@
1
1
  <script>
2
2
  import debounce from 'lodash/debounce';
3
- import { GlCard } from '@gitlab/ui';
3
+ import { GlButton, GlCard } from '@gitlab/ui';
4
4
  import { translate } from '../../../../../utils/i18n';
5
5
  import DuoChatContextItemSelections from '../duo_chat_context_item_selections/duo_chat_context_item_selections.vue';
6
6
  import { categoriesValidator, contextItemsValidator, wrapIndex } from '../utils';
@@ -12,6 +12,7 @@ const SEARCH_DEBOUNCE_MS = 30;
12
12
  export default {
13
13
  name: 'DuoChatContextItemMenu',
14
14
  components: {
15
+ GlButton,
15
16
  GlCard,
16
17
  DuoChatContextItemMenuCategoryItems,
17
18
  DuoChatContextItemMenuSearchItems,
@@ -129,12 +130,6 @@ export default {
129
130
  'select',
130
131
  this.results.find((result) => result.id === item.id)
131
132
  );
132
-
133
- /**
134
- * Emitted when the menu should be closed.
135
- */
136
- this.$emit('close');
137
- this.resetSelection();
138
133
  },
139
134
  removeItem(item) {
140
135
  /**
@@ -177,22 +172,29 @@ export default {
177
172
  break;
178
173
  case 'Escape':
179
174
  e.preventDefault();
180
- if (this.showCategorySelection) {
181
- this.$emit('close');
182
- return;
183
- }
184
-
185
- this.selectedCategory = null;
186
-
187
- /**
188
- * Emitted when the parent DuoChat component should refocus on the main prompt input
189
- */
190
- this.$emit('focus-prompt');
175
+ this.handleEsc();
191
176
  break;
192
177
  default:
193
178
  break;
194
179
  }
195
180
  },
181
+ handleEsc() {
182
+ if (this.showCategorySelection) {
183
+ this.closeMenu();
184
+ return;
185
+ }
186
+
187
+ // Otherwise go back to the category selection menu
188
+ this.selectedCategory = null;
189
+
190
+ /**
191
+ * Emitted when the parent DuoChat component should refocus on the main prompt input
192
+ */
193
+ this.$emit('focus-prompt');
194
+ },
195
+ closeMenu() {
196
+ this.$emit('close');
197
+ },
196
198
  moveActiveIndex(step) {
197
199
  if (this.showCategorySelection) {
198
200
  // Categories cannot be disabled, so just loop to the next/prev one
@@ -241,39 +243,71 @@ export default {
241
243
  <duo-chat-context-item-selections
242
244
  v-if="selections.length"
243
245
  :selections="selections"
244
- :categories="categories"
245
246
  :removable="true"
246
247
  :title="$options.i18n.selectedContextItemsTitle"
247
248
  :default-collapsed="false"
248
249
  class="gl-mb-3"
250
+ data-testid="primary-context-item-selections"
249
251
  @remove="removeItem"
250
252
  @get-content="onGetContextItemContent"
251
253
  />
252
- <gl-card
253
- v-if="open"
254
- class="slash-commands !gl-absolute gl-bottom-0 gl-w-full gl-pl-0 gl-shadow-md"
255
- body-class="!gl-p-2"
256
- data-testid="context-item-menu"
257
- >
258
- <duo-chat-context-item-menu-category-items
259
- v-if="showCategorySelection"
260
- :active-index="activeIndex"
261
- :categories="categories"
262
- @select="selectCategory"
263
- @active-index-change="activeIndex = $event"
264
- />
265
- <duo-chat-context-item-menu-search-items
266
- v-else
267
- v-model="searchQuery"
268
- :active-index="activeIndex"
269
- :category="selectedCategory"
270
- :loading="loading"
271
- :error="error"
272
- :results="results"
273
- @select="selectItem"
274
- @keyup="handleKeyUp"
275
- @active-index-change="activeIndex = $event"
276
- />
277
- </gl-card>
254
+ <div v-if="open" tabindex="0" data-testid="context-item-menu-wrapper" @keydown.esc="handleEsc">
255
+ <gl-card
256
+ class="slash-commands !gl-absolute gl-bottom-0 gl-w-full gl-pl-0 gl-shadow-md"
257
+ body-class="!gl-p-2"
258
+ data-testid="context-item-menu"
259
+ >
260
+ <div class="gl-flex gl-mb-2">
261
+ <gl-button
262
+ v-if="selectedCategory"
263
+ size="small"
264
+ icon="chevron-lg-left"
265
+ aria-label="Go back"
266
+ class="!gl-shadow-none"
267
+ data-testid="context-item-menu-back-button"
268
+ @click="handleEsc()"
269
+ />
270
+
271
+ <gl-button
272
+ size="small"
273
+ icon="close"
274
+ aria-label="Close menu"
275
+ class="gl-ml-auto !gl-shadow-none"
276
+ data-testid="context-item-menu-close-button"
277
+ @click="closeMenu()"
278
+ />
279
+ </div>
280
+ <duo-chat-context-item-menu-category-items
281
+ v-if="showCategorySelection"
282
+ :active-index="activeIndex"
283
+ :categories="categories"
284
+ @select="selectCategory"
285
+ @active-index-change="activeIndex = $event"
286
+ />
287
+ <duo-chat-context-item-menu-search-items
288
+ v-else
289
+ v-model="searchQuery"
290
+ :active-index="activeIndex"
291
+ :category="selectedCategory"
292
+ :loading="loading"
293
+ :error="error"
294
+ :results="results"
295
+ @select="selectItem"
296
+ @keyup="handleKeyUp"
297
+ @active-index-change="activeIndex = $event"
298
+ />
299
+ <duo-chat-context-item-selections
300
+ v-if="selections.length"
301
+ :selections="selections"
302
+ :removable="true"
303
+ :title="$options.i18n.selectedContextItemsTitle"
304
+ :default-collapsed="false"
305
+ class="gl-mt-2 !gl-mb-0 gl-max-h-13 gl-overflow-y-auto"
306
+ data-testid="in-menu-context-item-selections"
307
+ @remove="removeItem"
308
+ @get-content="onGetContextItemContent"
309
+ />
310
+ </gl-card>
311
+ </div>
278
312
  </div>
279
313
  </template>
@@ -143,7 +143,6 @@ export default {
143
143
  >
144
144
  <gl-token
145
145
  v-for="item in selections"
146
- :id="`context-item-${item.id}-${selectionsId}-token`"
147
146
  :key="item.id"
148
147
  :view-only="!removable"
149
148
  variant="default"
@@ -156,21 +155,22 @@ export default {
156
155
  @keydown.space.prevent="onOpenItem($event, item)"
157
156
  @close="onRemoveItem(item)"
158
157
  >
159
- <div
160
- :id="`context-item-${item.id}-${selectionsId}`"
161
- class="gl-flex gl-min-w-0 gl-items-center"
162
- >
158
+ <div class="gl-flex gl-min-w-0 gl-items-center">
163
159
  <gl-icon
164
160
  v-if="item.metadata.icon"
165
161
  :name="item.metadata.icon"
166
162
  :size="12"
167
163
  class="gl-mr-1"
168
164
  />
169
- <gl-truncate :text="item.metadata.title" position="middle" />
165
+ <gl-truncate
166
+ :id="`context-item-${item.id}-${selectionsId}-title`"
167
+ :text="item.metadata.title"
168
+ position="middle"
169
+ />
170
170
  </div>
171
171
  <duo-chat-context-item-popover
172
172
  :context-item="item"
173
- :target="`context-item-${item.id}-${selectionsId}-token`"
173
+ :target="`context-item-${item.id}-${selectionsId}-title`"
174
174
  placement="bottom"
175
175
  @show-git-diff="onOpenItem(item)"
176
176
  />
@@ -1,5 +1,6 @@
1
1
  export const CHAT_RESET_MESSAGE = '/reset';
2
2
  export const CHAT_CLEAR_MESSAGE = '/clear';
3
+ export const CHAT_NEW_MESSAGE = '/new';
3
4
  export const CHAT_INCLUDE_MESSAGE = '/include';
4
5
 
5
6
  export const LOADING_TRANSITION_DURATION = 7500;
@@ -16,7 +16,6 @@ consumer component.
16
16
  :is-loading="isLoading"
17
17
  :is-chat-available="isChatAvailable"
18
18
  :predefined-prompts="predefinedPrompts"
19
- :badge-help-page-url="badgeHelpPageUrl"
20
19
  :canceled-request-ids="cancelledRequestIds"
21
20
  :tool-name="toolName"
22
21
  :empty-state-title="emptyStateTitle"
@@ -74,8 +73,6 @@ be necessarily reactive in the consumer component. The properties that might be
74
73
  questions. Usually, this decision stays the same during the component's lifecycle.
75
74
  - `predefinedPrompts`. The `Array` of strings that represents the possible questions to ask when
76
75
  there are no messages in the chat.
77
- - `badgeHelpPageUrl`. The link to an external page explaining the meaning of an "experiment".
78
- The prop is passed down to the [`GlExperimentBadge` component](?path=/docs/experimental-experiment-badge--docs).
79
76
  - `emptyStateTitle`. Title of the empty state component. Visible when there are no messages.
80
77
  - `emptyStateDescription`. Description text of the empty state component. Visible when there are no messages.
81
78
  - `chatPromptPlaceholder`. Placeholder text for the chat prompt input.
@@ -109,7 +106,6 @@ export default {
109
106
  this.title = 'Foo Bar';
110
107
  this.isChatAvailable = true; // this is just an example. `true` is the default value
111
108
  this.predefinedPrompts = ['How to …?', 'Where do I …?'];
112
- this.badgeHelpPageUrl = 'https://dev.null';
113
109
  this.emptyStateTitle = 'Ask anything';
114
110
  this.emptyStateDescription = 'You will see the answers below';
115
111
  this.chatPromptPlaceholder = 'Type your question here';
@@ -21,6 +21,7 @@ import {
21
21
  badgeTypeValidator,
22
22
  CHAT_RESET_MESSAGE,
23
23
  CHAT_CLEAR_MESSAGE,
24
+ CHAT_NEW_MESSAGE,
24
25
  CHAT_INCLUDE_MESSAGE,
25
26
  MESSAGE_MODEL_ROLES,
26
27
  } from './constants';
@@ -185,14 +186,6 @@ export default {
185
186
  required: false,
186
187
  default: () => i18n.CHAT_DEFAULT_PREDEFINED_PROMPTS,
187
188
  },
188
- /**
189
- * URL to the help page. This is passed down to the `GlExperimentBadge` component.
190
- */
191
- badgeHelpPageUrl: {
192
- type: String,
193
- required: false,
194
- default: '',
195
- },
196
189
  /**
197
190
  * The type of the badge. This is passed down to the `GlExperimentBadge` component. Refer that component for more information.
198
191
  */
@@ -284,12 +277,6 @@ export default {
284
277
  caseInsensitivePrompt() {
285
278
  return this.prompt.toLowerCase().trim();
286
279
  },
287
- resetDisabled() {
288
- if (this.isLoading || !this.hasMessages) {
289
- return true;
290
- }
291
- return this.lastMessage?.content === CHAT_RESET_MESSAGE;
292
- },
293
280
  isStreaming() {
294
281
  if (this.canceledRequestIds.includes(this.lastMessage?.requestId)) {
295
282
  return false;
@@ -403,10 +390,6 @@ export default {
403
390
  return;
404
391
  }
405
392
  if (this.prompt) {
406
- if (this.caseInsensitivePrompt === CHAT_RESET_MESSAGE && this.resetDisabled) {
407
- return;
408
- }
409
-
410
393
  if (
411
394
  this.caseInsensitivePrompt.startsWith(CHAT_INCLUDE_MESSAGE) &&
412
395
  this.hasContextItemSelectionMenu
@@ -415,7 +398,11 @@ export default {
415
398
  return;
416
399
  }
417
400
 
418
- if (![CHAT_RESET_MESSAGE, CHAT_CLEAR_MESSAGE].includes(this.caseInsensitivePrompt)) {
401
+ if (
402
+ ![CHAT_RESET_MESSAGE, CHAT_CLEAR_MESSAGE, CHAT_NEW_MESSAGE].includes(
403
+ this.caseInsensitivePrompt
404
+ )
405
+ ) {
419
406
  this.displaySubmitButton = false;
420
407
  }
421
408
 
@@ -601,12 +588,7 @@ export default {
601
588
  >
602
589
  <div class="drawer-title gl-flex gl-items-center gl-justify-start gl-p-5">
603
590
  <h3 class="gl-my-0 gl-text-size-h2">{{ title }}</h3>
604
- <gl-experiment-badge
605
- v-if="badgeType"
606
- :help-page-url="badgeHelpPageUrl"
607
- :type="badgeType"
608
- container-id="chat-component"
609
- />
591
+ <gl-experiment-badge v-if="badgeType" :type="badgeType" container-id="chat-component" />
610
592
  <gl-button
611
593
  category="tertiary"
612
594
  variant="default"
@@ -136,9 +136,11 @@ export default {
136
136
  :invalid-feedback="$options.i18n.MODAL.REQUIRED_VALIDATION_ERROR"
137
137
  :state="isValid"
138
138
  :label="$options.i18n.MODAL.OPTIONS_LABEL"
139
+ label-for="feedback-options-checkbox-group"
139
140
  data-testid="feedback-options"
140
141
  >
141
142
  <gl-form-checkbox-group
143
+ id="feedback-options-checkbox-group"
142
144
  v-model="selectedFeedbackOptions"
143
145
  :options="$options.feedbackOptions"
144
146
  />
package/src/index.js CHANGED
@@ -1,3 +1,19 @@
1
1
  export { default as DuoUserFeedback } from './components/user_feedback/user_feedback.vue';
2
+
3
+ // Duo Workflow components
4
+ export { default as DuoWorkflowPanel } from './components/workflow/components/duo_workflow_panel/duo_workflow_panel.vue';
5
+ export { default as DuoWorkflowPrompt } from './components/workflow/components/duo_workflow_prompt/duo_workflow_prompt.vue';
6
+
7
+ // Duo Chat component
2
8
  export { default as DuoChat } from './components/chat/duo_chat.vue';
9
+ export { default as DuoChatContextConversation } from './components/chat/components/duo_chat_conversation/duo_chat_conversation.vue';
10
+ export { default as DuoChatLoader } from './components/chat/components/duo_chat_loader/duo_chat_loader.vue';
11
+ export { default as DuoChatMessage } from './components/chat/components/duo_chat_message/duo_chat_message.vue';
12
+ export { default as DuoChatMessageSources } from './components/chat/components/duo_chat_message_sources/duo_chat_message_sources.vue';
13
+ export { default as DuoChatPredefinedPrompts } from './components/chat/components/duo_chat_predefined_prompts/duo_chat_predefined_prompts.vue';
14
+
15
+ // Duo Chat Context components
16
+ export { default as DuoChatContextItemDetailsModal } from './components/chat/components/duo_chat_context/duo_chat_context_item_details_modal/duo_chat_context_item_details_modal.vue';
3
17
  export { default as DuoChatContextItemMenu } from './components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.vue';
18
+ export { default as DuoChatContextItemPopover } from './components/chat/components/duo_chat_context/duo_chat_context_item_popover/duo_chat_context_item_popover.vue';
19
+ export { default as DuoChatContextItemSelections } from './components/chat/components/duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections.vue';