@gitlab/ui 91.13.0 → 91.14.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.
Files changed (21) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/components/base/form/form_date/form_date.js +2 -2
  3. package/dist/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_item.js +81 -0
  4. package/dist/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_items.js +10 -5
  5. package/dist/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_popover/duo_chat_context_item_popover.js +19 -15
  6. package/dist/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections.js +5 -5
  7. package/dist/components/experimental/duo/chat/components/duo_chat_context/mock_context_data.js +4 -1
  8. package/dist/components/experimental/duo/chat/components/duo_chat_context/utils.js +9 -1
  9. package/dist/tailwind.css +1 -1
  10. package/dist/tailwind.css.map +1 -1
  11. package/package.json +5 -5
  12. package/src/components/base/form/form_character_count/form_character_count.md +2 -2
  13. package/src/components/base/form/form_character_count/form_character_count.vue +2 -2
  14. package/src/components/base/form/form_date/form_date.vue +2 -2
  15. package/src/components/base/form/form_textarea/form_textarea.vue +2 -2
  16. package/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_item.vue +71 -0
  17. package/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_items.vue +19 -12
  18. package/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_popover/duo_chat_context_item_popover.vue +24 -20
  19. package/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections.vue +12 -12
  20. package/src/components/experimental/duo/chat/components/duo_chat_context/mock_context_data.js +4 -0
  21. package/src/components/experimental/duo/chat/components/duo_chat_context/utils.js +12 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # [91.14.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v91.13.0...v91.14.0) (2024-09-10)
2
+
3
+
4
+ ### Features
5
+
6
+ * add duo chat context menu search item styling ([1b97743](https://gitlab.com/gitlab-org/gitlab-ui/commit/1b977438f4566fc24e51cab05b3b5dd3553cc61a))
7
+
1
8
  # [91.13.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v91.12.0...v91.13.0) (2024-09-06)
2
9
 
3
10
 
@@ -31,12 +31,12 @@ var script = {
31
31
  minInvalidFeedback: {
32
32
  type: String,
33
33
  required: false,
34
- default: 'Must be after minimum date'
34
+ default: 'Must be after minimum date.'
35
35
  },
36
36
  maxInvalidFeedback: {
37
37
  type: String,
38
38
  required: false,
39
- default: 'Must be before maximum date'
39
+ default: 'Must be before maximum date.'
40
40
  },
41
41
  value: {
42
42
  type: String,
@@ -0,0 +1,81 @@
1
+ import GlDuoChatContextItemPopover from '../duo_chat_context_item_popover/duo_chat_context_item_popover';
2
+ import GlIcon from '../../../../../../base/icon/icon';
3
+ import { categoryValidator, contextItemValidator, formatMergeRequestId, formatIssueId } from '../utils';
4
+ import { CONTEXT_ITEM_TYPE_MERGE_REQUEST, CONTEXT_ITEM_TYPE_ISSUE, CONTEXT_ITEM_TYPE_PROJECT_FILE } from '../constants';
5
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
6
+
7
+ var script = {
8
+ name: 'GlDuoChatContextItemMenuSearchItem',
9
+ components: {
10
+ GlIcon,
11
+ GlDuoChatContextItemPopover
12
+ },
13
+ props: {
14
+ category: {
15
+ type: Object,
16
+ required: true,
17
+ validator: categoryValidator
18
+ },
19
+ contextItem: {
20
+ type: Object,
21
+ required: true,
22
+ validator: contextItemValidator
23
+ }
24
+ },
25
+ computed: {
26
+ title() {
27
+ var _this$contextItem$met;
28
+ return ((_this$contextItem$met = this.contextItem.metadata) === null || _this$contextItem$met === void 0 ? void 0 : _this$contextItem$met.name) || '';
29
+ },
30
+ secondaryText() {
31
+ switch (this.category.value) {
32
+ case CONTEXT_ITEM_TYPE_PROJECT_FILE:
33
+ return this.contextItem.metadata.info.relFilePath;
34
+ case CONTEXT_ITEM_TYPE_ISSUE:
35
+ return formatIssueId(this.contextItem.metadata.info.iid);
36
+ case CONTEXT_ITEM_TYPE_MERGE_REQUEST:
37
+ return formatMergeRequestId(this.contextItem.metadata.info.iid);
38
+ default:
39
+ return '';
40
+ }
41
+ }
42
+ }
43
+ };
44
+
45
+ /* script */
46
+ const __vue_script__ = script;
47
+
48
+ /* template */
49
+ 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"},[_c('div',{staticClass:"gl-flex gl-items-center"},[_c('gl-icon',{staticClass:"gl-mr-2 gl-shrink-0",attrs:{"name":_vm.category.icon,"data-testid":"category-icon"}}),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.title))]),_vm._v(" "),_c('gl-icon',{staticClass:"gl-ml-2 gl-shrink-0 gl-cursor-pointer gl-text-secondary",attrs:{"id":("info-icon-" + (_vm.contextItem.id)),"name":"information-o","size":12}}),_vm._v(" "),_c('gl-duo-chat-context-item-popover',{attrs:{"context-item":_vm.contextItem,"target":("info-icon-" + (_vm.contextItem.id)),"placement":"left"}})],1),_vm._v(" "),_c('div',{staticClass:"gl-mt-1 gl-shrink-0 gl-whitespace-nowrap gl-text-secondary"},[_vm._v("\n "+_vm._s(_vm.secondaryText)+"\n ")])])};
50
+ var __vue_staticRenderFns__ = [];
51
+
52
+ /* style */
53
+ const __vue_inject_styles__ = undefined;
54
+ /* scoped */
55
+ const __vue_scope_id__ = undefined;
56
+ /* module identifier */
57
+ const __vue_module_identifier__ = undefined;
58
+ /* functional template */
59
+ const __vue_is_functional_template__ = false;
60
+ /* style inject */
61
+
62
+ /* style inject SSR */
63
+
64
+ /* style inject shadow dom */
65
+
66
+
67
+
68
+ const __vue_component__ = __vue_normalize__(
69
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
70
+ __vue_inject_styles__,
71
+ __vue_script__,
72
+ __vue_scope_id__,
73
+ __vue_is_functional_template__,
74
+ __vue_module_identifier__,
75
+ false,
76
+ undefined,
77
+ undefined,
78
+ undefined
79
+ );
80
+
81
+ export default __vue_component__;
@@ -4,15 +4,17 @@ import GlAlert from '../../../../../../base/alert/alert';
4
4
  import { sprintf, translate } from '../../../../../../../utils/i18n';
5
5
  import { categoryValidator, contextItemsValidator } from '../utils';
6
6
  import GlDuoChatContextItemMenuSearchItemsLoading from './duo_chat_context_item_menu_search_items_loading';
7
+ import GlDuoChatContextItemMenuSearchItem from './duo_chat_context_item_menu_search_item';
7
8
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
8
9
 
9
10
  var script = {
10
11
  name: 'GlDuoChatContextItemMenuSearchItems',
11
12
  components: {
12
13
  GlAlert,
13
- GlFormInput,
14
14
  GlDropdownItem,
15
- GlDuoChatContextItemMenuSearchItemsLoading
15
+ GlDuoChatContextItemMenuSearchItem,
16
+ GlDuoChatContextItemMenuSearchItemsLoading,
17
+ GlFormInput
16
18
  },
17
19
  model: {
18
20
  prop: 'searchQuery',
@@ -72,8 +74,8 @@ var script = {
72
74
  }
73
75
  },
74
76
  methods: {
75
- selectItem(item) {
76
- this.$emit('select', item);
77
+ selectItem(contextItem) {
78
+ this.$emit('select', contextItem);
77
79
  this.userInitiatedSearch = false;
78
80
  },
79
81
  setActiveIndex(index) {
@@ -92,7 +94,10 @@ var script = {
92
94
  const __vue_script__ = script;
93
95
 
94
96
  /* template */
95
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:"gl-max-h-31 gl-overflow-y-scroll"},[(_vm.loading)?_c('gl-duo-chat-context-item-menu-search-items-loading',{attrs:{"rows":_vm.numLoadingItems}}):(_vm.error)?_c('gl-alert',{staticClass:"gl-m-3",attrs:{"variant":"danger","dismissible":false,"data-testid":"search-results-error"}},[_vm._v("\n "+_vm._s(_vm.error)+"\n ")]):(_vm.showEmptyState)?_c('div',{staticClass:"gl-rounded-base gl-p-3 gl-text-center gl-text-secondary",attrs:{"data-testid":"search-results-empty-state"}},[_vm._v("\n "+_vm._s(_vm.$options.i18n.emptyStateMessage)+"\n ")]):_c('ul',{staticClass:"gl-mb-1 gl-list-none gl-flex-row gl-pl-0"},_vm._l((_vm.results),function(item,index){return _c('gl-dropdown-item',{key:item.id,staticClass:"duo-chat-context-search-result-item",class:[{ 'active-command': index === _vm.activeIndex, disabled: !item.isEnabled }],attrs:{"id":("dropdown-item-" + index),"tabindex":!item.isEnabled ? -1 : undefined,"data-testid":"search-result-item"},on:{"click":function($event){return _vm.selectItem(item)}}},[_c('div',{on:{"mouseenter":function($event){return _vm.setActiveIndex(index)}}},[_c('div',{attrs:{"data-testid":"search-result-item-details"}},[_vm._v("\n "+_vm._s(item.metadata.name)+" "+_vm._s(item.isEnabled ? '' : '(disabled)')+"\n ")])])])}),1)],1),_vm._v(" "),_c('gl-form-input',{ref:"contextMenuSearchInput",attrs:{"value":_vm.searchQuery,"placeholder":_vm.searchInputPlaceholder,"autofocus":"","data-testid":"context-menu-search-input"},on:{"input":function($event){return _vm.$emit('update:searchQuery', $event)}}})],1)};
97
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:"gl-max-h-31 gl-overflow-y-scroll"},[(_vm.loading)?_c('gl-duo-chat-context-item-menu-search-items-loading',{attrs:{"rows":_vm.numLoadingItems}}):(_vm.error)?_c('gl-alert',{staticClass:"gl-m-3",attrs:{"variant":"danger","dismissible":false,"data-testid":"search-results-error"}},[_vm._v("\n "+_vm._s(_vm.error)+"\n ")]):(_vm.showEmptyState)?_c('div',{staticClass:"gl-rounded-base gl-p-3 gl-text-center gl-text-secondary",attrs:{"data-testid":"search-results-empty-state"}},[_vm._v("\n "+_vm._s(_vm.$options.i18n.emptyStateMessage)+"\n ")]):_c('ul',{staticClass:"gl-mb-1 gl-list-none gl-flex-row gl-pl-0"},_vm._l((_vm.results),function(contextItem,index){return _c('gl-dropdown-item',{key:contextItem.id,staticClass:"duo-chat-context-search-result-item",class:{
98
+ 'active-command': index === _vm.activeIndex,
99
+ 'gl-cursor-not-allowed [&>button]:focus-within:!gl-shadow-none': !contextItem.isEnabled,
100
+ },attrs:{"id":("dropdown-item-" + index),"tabindex":!contextItem.isEnabled ? -1 : undefined,"data-testid":"search-result-item"},on:{"click":function($event){return _vm.selectItem(contextItem)}}},[_c('div',{on:{"mouseenter":function($event){return _vm.setActiveIndex(index)}}},[_c('gl-duo-chat-context-item-menu-search-item',{class:{ 'gl-text-secondary': !contextItem.isEnabled },attrs:{"context-item":contextItem,"category":_vm.category,"data-testid":"search-result-item-details"}})],1)])}),1)],1),_vm._v(" "),_c('gl-form-input',{ref:"contextMenuSearchInput",attrs:{"value":_vm.searchQuery,"placeholder":_vm.searchInputPlaceholder,"autofocus":"","data-testid":"context-menu-search-input"},on:{"input":function($event){return _vm.$emit('update:searchQuery', $event)}}})],1)};
96
101
  var __vue_staticRenderFns__ = [];
97
102
 
98
103
  /* style */
@@ -1,12 +1,9 @@
1
1
  import GlPopover from '../../../../../../base/popover/popover';
2
2
  import { translate } from '../../../../../../../utils/i18n';
3
3
  import { CONTEXT_ITEM_TYPE_ISSUE, CONTEXT_ITEM_TYPE_MERGE_REQUEST, CONTEXT_ITEM_TYPE_PROJECT_FILE } from '../constants';
4
+ import { formatMergeRequestId, formatIssueId } from '../utils';
4
5
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
5
6
 
6
- const ID_PREFIXES = {
7
- issue: '#',
8
- merge_request: '!'
9
- };
10
7
  var script = {
11
8
  name: 'DuoChatContextItemPopover',
12
9
  components: {
@@ -14,9 +11,9 @@ var script = {
14
11
  },
15
12
  props: {
16
13
  /**
17
- * The context item to display in the popover.
14
+ * The context contextItem to display in the popover.
18
15
  */
19
- item: {
16
+ contextItem: {
20
17
  type: Object,
21
18
  required: true
22
19
  },
@@ -38,24 +35,31 @@ var script = {
38
35
  },
39
36
  computed: {
40
37
  itemInfo() {
41
- var _this$item$metadata;
42
- return ((_this$item$metadata = this.item.metadata) === null || _this$item$metadata === void 0 ? void 0 : _this$item$metadata.info) || {};
38
+ var _this$contextItem$met;
39
+ return ((_this$contextItem$met = this.contextItem.metadata) === null || _this$contextItem$met === void 0 ? void 0 : _this$contextItem$met.info) || {};
43
40
  },
44
41
  id() {
45
- const isIssuable = this.item.type === CONTEXT_ITEM_TYPE_ISSUE || this.item.type === CONTEXT_ITEM_TYPE_MERGE_REQUEST;
42
+ const isIssuable = this.contextItem.type === CONTEXT_ITEM_TYPE_ISSUE || this.contextItem.type === CONTEXT_ITEM_TYPE_MERGE_REQUEST;
46
43
  return isIssuable ? this.itemInfo.iid || '' : null;
47
44
  },
48
- idPrefix() {
49
- return ID_PREFIXES[this.item.type] || '';
45
+ formattedId() {
46
+ switch (this.contextItem.type) {
47
+ case CONTEXT_ITEM_TYPE_ISSUE:
48
+ return formatIssueId(this.id);
49
+ case CONTEXT_ITEM_TYPE_MERGE_REQUEST:
50
+ return formatMergeRequestId(this.id);
51
+ default:
52
+ return '';
53
+ }
50
54
  },
51
55
  filePath() {
52
- return this.item.type === CONTEXT_ITEM_TYPE_PROJECT_FILE ? this.itemInfo.relFilePath || '' : null;
56
+ return this.contextItem.type === CONTEXT_ITEM_TYPE_PROJECT_FILE ? this.itemInfo.relFilePath || '' : null;
53
57
  },
54
58
  isEnabled() {
55
- return this.item.isEnabled !== false;
59
+ return this.contextItem.isEnabled !== false;
56
60
  },
57
61
  disabledMessage() {
58
- return Array.isArray(this.item.disabledReasons) && this.item.disabledReasons.length > 0 ? this.item.disabledReasons.join(', ') : translate('DuoChatContextItemPopover.DisabledReason', 'This item is disabled');
62
+ return Array.isArray(this.contextItem.disabledReasons) && this.contextItem.disabledReasons.length > 0 ? this.contextItem.disabledReasons.join(', ') : translate('DuoChatContextItemPopover.DisabledReason', 'This item is disabled');
59
63
  }
60
64
  },
61
65
  methods: {
@@ -67,7 +71,7 @@ var script = {
67
71
  const __vue_script__ = script;
68
72
 
69
73
  /* template */
70
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-popover',{attrs:{"target":_vm.target,"triggers":"hover focus","placement":_vm.placement,"title":_vm.item.metadata.name,"custom-class":"gl-duo-chat-item-popover"},scopedSlots:_vm._u([{key:"title",fn:function(){return [_c('span',{staticClass:"gl-text-sm gl-text-gray-500",attrs:{"data-testid":"chat-context-popover-title"}},[_vm._v(_vm._s(_vm.item.metadata.name))])]},proxy:true}])},[_vm._v(" "),_c('div',{staticClass:"gl-p-3"},[_c('div',{staticClass:"gl-mb-2"},[_c('strong',{staticClass:"gl-mr-1"},[_vm._v(_vm._s(_vm.translate('DuoChatContextItemPopover.ProjectLabel', 'Project:')))]),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.itemInfo.project))])]),_vm._v(" "),(_vm.filePath !== null)?_c('div',{staticClass:"gl-mb-2"},[_c('strong',{staticClass:"gl-mr-1"},[_vm._v(_vm._s(_vm.translate('DuoChatContextItemPopover.PathLabel', 'Path:')))]),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.filePath))])]):_vm._e(),_vm._v(" "),(_vm.id !== null)?_c('div',{staticClass:"gl-mb-2"},[_c('strong',{staticClass:"gl-mr-1"},[_vm._v(_vm._s(_vm.translate('DuoChatContextItemPopover.IdLabel', 'ID:')))]),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.idPrefix)+_vm._s(_vm.id))])]):_vm._e(),_vm._v(" "),_c('div',{staticClass:"gl-mb-2"},[_c('strong',{staticClass:"gl-mr-1"},[_vm._v(_vm._s(_vm.translate('DuoChatContextItemPopover.TypeLabel', 'Type:')))]),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.item.type))])]),_vm._v(" "),(!_vm.isEnabled)?_c('div',{staticClass:"gl-text-red-500",attrs:{"data-testid":"chat-context-popover-disabled"}},[_c('strong',{staticClass:"gl-mr-1"},[_vm._v(_vm._s(_vm.translate('DuoChatContextItemPopover.DisabledMessageLabel', 'Note:')))]),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.disabledMessage))])]):_vm._e()])])};
74
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-popover',{attrs:{"target":_vm.target,"triggers":"hover focus","placement":_vm.placement,"title":_vm.contextItem.metadata.name,"custom-class":"gl-duo-chat-item-popover"},scopedSlots:_vm._u([{key:"title",fn:function(){return [_c('span',{staticClass:"gl-text-sm gl-text-gray-500",attrs:{"data-testid":"chat-context-popover-title"}},[_vm._v(_vm._s(_vm.contextItem.metadata.name))])]},proxy:true}])},[_vm._v(" "),_c('div',{staticClass:"gl-p-3"},[_c('div',{staticClass:"gl-mb-2"},[_c('strong',{staticClass:"gl-mr-1"},[_vm._v(_vm._s(_vm.translate('DuoChatContextItemPopover.ProjectLabel', 'Project:')))]),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.itemInfo.project))])]),_vm._v(" "),(_vm.filePath !== null)?_c('div',{staticClass:"gl-mb-2"},[_c('strong',{staticClass:"gl-mr-1"},[_vm._v(_vm._s(_vm.translate('DuoChatContextItemPopover.PathLabel', 'Path:')))]),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.filePath))])]):_vm._e(),_vm._v(" "),(_vm.id !== null)?_c('div',{staticClass:"gl-mb-2"},[_c('strong',{staticClass:"gl-mr-1"},[_vm._v(_vm._s(_vm.translate('DuoChatContextItemPopover.IdLabel', 'ID:')))]),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.formattedId))])]):_vm._e(),_vm._v(" "),_c('div',{staticClass:"gl-mb-2"},[_c('strong',{staticClass:"gl-mr-1"},[_vm._v(_vm._s(_vm.translate('DuoChatContextItemPopover.TypeLabel', 'Type:')))]),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.contextItem.type))])]),_vm._v(" "),(!_vm.isEnabled)?_c('div',{staticClass:"gl-text-red-500",attrs:{"data-testid":"chat-context-popover-disabled"}},[_c('strong',{staticClass:"gl-mr-1"},[_vm._v(_vm._s(_vm.translate('DuoChatContextItemPopover.DisabledMessageLabel', 'Note:')))]),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.disabledMessage))])]):_vm._e()])])};
71
75
  var __vue_staticRenderFns__ = [];
72
76
 
73
77
  /* style */
@@ -68,12 +68,12 @@ var script = {
68
68
  toggleCollapse() {
69
69
  this.isCollapsed = !this.isCollapsed;
70
70
  },
71
- onRemoveItem(item) {
71
+ onRemoveItem(contextItem) {
72
72
  /**
73
- * Emitted when a context item should be removed.
74
- * @property {Object} item - The context item to be removed
73
+ * Emitted when a context contextItem should be removed.
74
+ * @property {Object} item - The context contextItem to be removed
75
75
  */
76
- this.$emit('remove', item);
76
+ this.$emit('remove', contextItem);
77
77
  }
78
78
  }
79
79
  };
@@ -82,7 +82,7 @@ var script = {
82
82
  const __vue_script__ = script;
83
83
 
84
84
  /* template */
85
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-mb-3 gl-flex gl-flex-col"},[_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-gray-500",attrs:{"data-testid":"chat-context-selections-title"},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",attrs:{"view-only":!_vm.removable,"variant":"default"},on:{"close":function($event){return _vm.onRemoveItem(item)}}},[_c('div',{staticClass:"gl-flex gl-items-center",attrs:{"id":("context-item-" + (item.id) + "-" + _vm.selectionsId)}},[_c('gl-icon',{staticClass:"gl-mr-1",attrs:{"name":_vm.getIconName(item.type),"size":12}}),_vm._v("\n "+_vm._s(item.metadata.name)+"\n ")],1),_vm._v(" "),_c('gl-duo-chat-context-item-popover',{attrs:{"item":item,"target":("context-item-" + (item.id) + "-" + _vm.selectionsId),"placement":"bottom"}})],1)}),1)])};
85
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-mb-3 gl-flex gl-flex-col"},[_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-gray-500",attrs:{"data-testid":"chat-context-selections-title"},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(contextItem){return _c('gl-token',{key:contextItem.id,staticClass:"gl-mb-2 gl-mr-2",attrs:{"view-only":!_vm.removable,"variant":"default"},on:{"close":function($event){return _vm.onRemoveItem(contextItem)}}},[_c('div',{staticClass:"gl-flex gl-items-center",attrs:{"id":("context-item-" + (contextItem.id) + "-" + _vm.selectionsId)}},[_c('gl-icon',{staticClass:"gl-mr-1",attrs:{"name":_vm.getIconName(contextItem.type),"size":12}}),_vm._v("\n "+_vm._s(contextItem.metadata.name)+"\n ")],1),_vm._v(" "),_c('gl-duo-chat-context-item-popover',{attrs:{"context-item":contextItem,"target":("context-item-" + (contextItem.id) + "-" + _vm.selectionsId),"placement":"bottom"}})],1)}),1)])};
86
86
  var __vue_staticRenderFns__ = [];
87
87
 
88
88
  /* style */
@@ -13,6 +13,9 @@ const MOCK_CATEGORIES = [{
13
13
  value: CONTEXT_ITEM_TYPE_MERGE_REQUEST,
14
14
  icon: 'merge-request'
15
15
  }];
16
+ function getMockCategory(categoryValue) {
17
+ return MOCK_CATEGORIES.find(cat => cat.value === categoryValue);
18
+ }
16
19
  const MOCK_CONTEXT_ITEM_FILE = {
17
20
  id: '123e4567-e89b-12d3-a456-426614174000',
18
21
  isEnabled: true,
@@ -133,4 +136,4 @@ const getMockContextItems = () => {
133
136
  return [...enabledItems, ...disabledItems];
134
137
  };
135
138
 
136
- export { MOCK_CATEGORIES, MOCK_CONTEXT_ITEM_FILE, MOCK_CONTEXT_ITEM_FILE_DISABLED, MOCK_CONTEXT_ITEM_ISSUE, MOCK_CONTEXT_ITEM_ISSUE_DISABLED, MOCK_CONTEXT_ITEM_MERGE_REQUEST, MOCK_CONTEXT_ITEM_MERGE_REQUEST_DISABLED, getMockContextItems };
139
+ export { MOCK_CATEGORIES, MOCK_CONTEXT_ITEM_FILE, MOCK_CONTEXT_ITEM_FILE_DISABLED, MOCK_CONTEXT_ITEM_ISSUE, MOCK_CONTEXT_ITEM_ISSUE_DISABLED, MOCK_CONTEXT_ITEM_MERGE_REQUEST, MOCK_CONTEXT_ITEM_MERGE_REQUEST_DISABLED, getMockCategory, getMockContextItems };
@@ -13,5 +13,13 @@ function contextItemValidator(item) {
13
13
  function contextItemsValidator(items) {
14
14
  return Array.isArray(items) && items.every(item => contextItemValidator(item));
15
15
  }
16
+ function formatIssueId(iid) {
17
+ if (!iid) return '';
18
+ return `#${iid}`;
19
+ }
20
+ function formatMergeRequestId(iid) {
21
+ if (!iid) return '';
22
+ return `!${iid}`;
23
+ }
16
24
 
17
- export { categoriesValidator, categoryValidator, contextItemValidator, contextItemsValidator };
25
+ export { categoriesValidator, categoryValidator, contextItemValidator, contextItemsValidator, formatIssueId, formatMergeRequestId };
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-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--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-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--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-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--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(--gray-100,#dcdcde);background-image:linear-gradient(to right,var(--gray-100,#dcdcde) 0,var(--gray-50,#ececef) 23%,var(--gray-50,#ececef) 27%,var(--gray-100,#dcdcde) 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}}.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-border-l{border-left-color:var(--gl-border-color-default);border-left-style:solid}.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-fixed{position:fixed}.\!gl-absolute{position:absolute!important}.gl-absolute{position:absolute}.gl-relative{position:relative}.gl-bottom-0{bottom:0}.gl-bottom-2{bottom:.25rem}.gl-left-0{left:0}.gl-right-2{right:.25rem}.\!gl-z-9999{z-index:9999!important}.gl-z-200{z-index:200}.gl-float-right{float:right}.\!gl-m-0{margin:0!important}.gl-m-0{margin:0}.gl-m-3{margin:.5rem}.gl-m-7{margin:2rem}.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-mt-2{margin-top:.25rem!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-mb-8{margin-bottom:2.5rem}.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-4{margin-right:.75rem}.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!important}.gl-flex{display:flex}.gl-inline-flex{display:inline-flex}.gl-table{display:table}.gl-grid{display:grid}.\!gl-hidden{display:none!important}.gl-hidden{display:none}.\!gl-h-full{height:100%!important}.gl-h-0{height:0}.gl-h-11{height:4rem}.gl-h-13{height:6rem}.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-10{width:3.5rem}.gl-w-20{width:10rem}.gl-w-30{width:15rem}.gl-w-4\/10{width:40%}.gl-w-5{width:1rem}.gl-w-full{width:100%}.gl-max-w-1\/2{max-width:50%}.gl-max-w-75{max-width:37.5rem}.gl-max-w-full{max-width:100%}.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-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-place-items-center{place-items: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-2{gap:.25rem}.gl-gap-3{gap:.5rem}.gl-gap-4{gap:.75rem}.gl-gap-5{gap:1rem}.gl-gap-6{gap:1.5rem}.gl-gap-x-3{column-gap:.5rem}.gl-self-start{align-self:flex-start}.gl-overflow-hidden{overflow:hidden}.gl-overflow-visible{overflow:visible}.gl-overflow-y-auto{overflow-y:auto}.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-whitespace-pre-line{white-space:pre-line}.\!gl-rounded-base{border-radius:.25rem!important}.\!gl-rounded-none{border-radius:0!important}.gl-rounded-base{border-radius:.25rem}.gl-rounded-full{border-radius:50%}.gl-rounded-lg{border-radius:.5rem}.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{border-bottom-width:1px}.gl-border-b-0{border-bottom-width:0}.gl-border-b-1{border-bottom-width:1px}.gl-border-l{border-left-width:1px}.gl-border-t,.gl-border-t-1{border-top-width:1px}.gl-border-solid{border-style:solid}.\!gl-border-none{border-style:none!important}.gl-border-none{border-style:none}.gl-border-gray-200{border-color:var(--gray-200,#bfbfc3)}.gl-border-gray-50{border-color:var(--gray-50,#ececef)}.gl-border-red-500{border-color:var(--red-500,#dd2b0e)}.gl-border-section{border-color:var(--gl-border-color-section,var(--gl-border-color-default,#dcdcde))}.gl-border-b-gray-200{border-bottom-color:var(--gray-200,#bfbfc3)}.gl-border-b-section{border-bottom-color:var(--gl-border-color-section,var(--gl-border-color-default,#dcdcde))}.gl-border-t-gray-200{border-top-color:var(--gray-200,#bfbfc3)}.\!gl-bg-data-viz-green-700{background-color:var(--data-viz-green-700,#366800)!important}.\!gl-bg-data-viz-magenta-950{background-color:var(--data-viz-magenta-950,#541d31)!important}.\!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-data-viz-blue-500{background-color:var(--data-viz-blue-500,#617ae2)}.gl-bg-default{background-color:var(--gl-background-color-default,var(--gl-color-neutral-0,#fff))}.gl-bg-gray-10{background-color:var(--gray-10,#fbfafd)}.gl-bg-gray-50{background-color:var(--gray-50,#ececef)}.gl-bg-gray-900{background-color:var(--gray-900,#28272d)}.gl-bg-gray-950{background-color:var(--gray-950,#18171d)}.gl-bg-green-100{background-color:var(--green-100,#c3e6cd)}.gl-bg-overlap{background-color:var(--gl-background-color-overlap,var(--gl-color-neutral-0,#fff))}.gl-bg-overlay{background-color:var(--gl-background-color-overlay,var(--gl-color-alpha-dark-24,#0505063d))}.gl-bg-purple-50{background-color:var(--purple-50,#f4f0ff)}.gl-bg-red-100{background-color:var(--red-100,#fdd4cd)}.gl-bg-red-50{background-color:var(--red-50,#fcf1ef)}.gl-bg-section{background-color:var(--gl-background-color-section,var(--gl-background-color-overlap,#fff))}.gl-bg-strong{background-color:var(--gl-background-color-strong,var(--gl-color-neutral-50,#ececef))}.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-p-7{padding:2rem}.\!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-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-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-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-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-lg{font-size:1rem}.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-gray-500{color:var(--gray-500,#737278)!important}.\!gl-text-red-500{color:var(--red-500,#dd2b0e)!important}.\!gl-text-white{color:var(--white,#fff)!important}.gl-text-blue-100{color:var(--blue-100,#cbe2f9)}.gl-text-blue-500{color:var(--blue-500,#1f75cb)}.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-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-green-600{color:var(--green-600,#217645)}.gl-text-inherit{color:inherit}.gl-text-orange-500{color:var(--orange-500,#ab6100)}.gl-text-red-300{color:var(--red-300,#f57f6c)}.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-inner-1-gray-400{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.\!gl-shadow-inner-1-gray-400{--tw-shadow:inset 0 0 0 1px var(--gray-400,#89888d)!important;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)!important}.\!gl-shadow-inner-1-red-500{--tw-shadow:inset 0 0 0 1px var(--red-500,#dd2b0e)!important;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)!important}.\!gl-shadow-inner-1-red-500,.\!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-inner-1-gray-400{--tw-shadow:inset 0 0 0 1px var(--gray-400,#89888d);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-inner-1-gray-400,.gl-shadow-inner-1-red-300{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-shadow-inner-1-red-300{--tw-shadow:inset 0 0 0 1px var(--red-300,#f57f6c);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-inner-1-red-500{--tw-shadow:inset 0 0 0 1px var(--red-500,#dd2b0e);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-inner-1-red-500,.gl-shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-shadow-md{--tw-shadow:0 2px 8px var(--gl-shadow-color-default,#05050629),0 0 2px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 2px 8px var(--tw-shadow-color),0 0 2px var(--tw-shadow-color)}.gl-shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;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-font-monospace{font-family:var(--default-mono-font,"GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-variant-ligatures:none}.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}.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}}@media (min-width:768px){.md\:gl-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}
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-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--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-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--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-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--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(--gray-100,#dcdcde);background-image:linear-gradient(to right,var(--gray-100,#dcdcde) 0,var(--gray-50,#ececef) 23%,var(--gray-50,#ececef) 27%,var(--gray-100,#dcdcde) 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}}.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-border-l{border-left-color:var(--gl-border-color-default);border-left-style:solid}.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-fixed{position:fixed}.\!gl-absolute{position:absolute!important}.gl-absolute{position:absolute}.gl-relative{position:relative}.gl-bottom-0{bottom:0}.gl-bottom-2{bottom:.25rem}.gl-left-0{left:0}.gl-right-2{right:.25rem}.\!gl-z-9999{z-index:9999!important}.gl-z-200{z-index:200}.gl-float-right{float:right}.\!gl-m-0{margin:0!important}.gl-m-0{margin:0}.gl-m-3{margin:.5rem}.gl-m-7{margin:2rem}.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-mt-2{margin-top:.25rem!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-mb-8{margin-bottom:2.5rem}.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-4{margin-right:.75rem}.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!important}.gl-flex{display:flex}.gl-inline-flex{display:inline-flex}.gl-table{display:table}.gl-grid{display:grid}.\!gl-hidden{display:none!important}.gl-hidden{display:none}.\!gl-h-full{height:100%!important}.gl-h-0{height:0}.gl-h-11{height:4rem}.gl-h-13{height:6rem}.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-10{width:3.5rem}.gl-w-20{width:10rem}.gl-w-30{width:15rem}.gl-w-4\/10{width:40%}.gl-w-5{width:1rem}.gl-w-full{width:100%}.gl-max-w-1\/2{max-width:50%}.gl-max-w-75{max-width:37.5rem}.gl-max-w-full{max-width:100%}.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-place-items-center{place-items: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-2{gap:.25rem}.gl-gap-3{gap:.5rem}.gl-gap-4{gap:.75rem}.gl-gap-5{gap:1rem}.gl-gap-6{gap:1.5rem}.gl-gap-x-3{column-gap:.5rem}.gl-self-start{align-self:flex-start}.gl-overflow-hidden{overflow:hidden}.gl-overflow-visible{overflow:visible}.gl-overflow-y-auto{overflow-y:auto}.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-whitespace-pre-line{white-space:pre-line}.\!gl-rounded-base{border-radius:.25rem!important}.\!gl-rounded-none{border-radius:0!important}.gl-rounded-base{border-radius:.25rem}.gl-rounded-full{border-radius:50%}.gl-rounded-lg{border-radius:.5rem}.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{border-bottom-width:1px}.gl-border-b-0{border-bottom-width:0}.gl-border-b-1{border-bottom-width:1px}.gl-border-l{border-left-width:1px}.gl-border-t,.gl-border-t-1{border-top-width:1px}.gl-border-solid{border-style:solid}.\!gl-border-none{border-style:none!important}.gl-border-none{border-style:none}.gl-border-gray-200{border-color:var(--gray-200,#bfbfc3)}.gl-border-gray-50{border-color:var(--gray-50,#ececef)}.gl-border-red-500{border-color:var(--red-500,#dd2b0e)}.gl-border-section{border-color:var(--gl-border-color-section,var(--gl-border-color-default,#dcdcde))}.gl-border-b-gray-200{border-bottom-color:var(--gray-200,#bfbfc3)}.gl-border-b-section{border-bottom-color:var(--gl-border-color-section,var(--gl-border-color-default,#dcdcde))}.gl-border-t-gray-200{border-top-color:var(--gray-200,#bfbfc3)}.\!gl-bg-data-viz-green-700{background-color:var(--data-viz-green-700,#366800)!important}.\!gl-bg-data-viz-magenta-950{background-color:var(--data-viz-magenta-950,#541d31)!important}.\!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-data-viz-blue-500{background-color:var(--data-viz-blue-500,#617ae2)}.gl-bg-default{background-color:var(--gl-background-color-default,var(--gl-color-neutral-0,#fff))}.gl-bg-gray-10{background-color:var(--gray-10,#fbfafd)}.gl-bg-gray-50{background-color:var(--gray-50,#ececef)}.gl-bg-gray-900{background-color:var(--gray-900,#28272d)}.gl-bg-gray-950{background-color:var(--gray-950,#18171d)}.gl-bg-green-100{background-color:var(--green-100,#c3e6cd)}.gl-bg-overlap{background-color:var(--gl-background-color-overlap,var(--gl-color-neutral-0,#fff))}.gl-bg-overlay{background-color:var(--gl-background-color-overlay,var(--gl-color-alpha-dark-24,#0505063d))}.gl-bg-purple-50{background-color:var(--purple-50,#f4f0ff)}.gl-bg-red-100{background-color:var(--red-100,#fdd4cd)}.gl-bg-red-50{background-color:var(--red-50,#fcf1ef)}.gl-bg-section{background-color:var(--gl-background-color-section,var(--gl-background-color-overlap,#fff))}.gl-bg-strong{background-color:var(--gl-background-color-strong,var(--gl-color-neutral-50,#ececef))}.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-p-7{padding:2rem}.\!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-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-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-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-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-lg{font-size:1rem}.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-gray-500{color:var(--gray-500,#737278)!important}.\!gl-text-red-500{color:var(--red-500,#dd2b0e)!important}.\!gl-text-white{color:var(--white,#fff)!important}.gl-text-blue-100{color:var(--blue-100,#cbe2f9)}.gl-text-blue-500{color:var(--blue-500,#1f75cb)}.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-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-green-600{color:var(--green-600,#217645)}.gl-text-inherit{color:inherit}.gl-text-orange-500{color:var(--orange-500,#ab6100)}.gl-text-red-300{color:var(--red-300,#f57f6c)}.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-inner-1-gray-400{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.\!gl-shadow-inner-1-gray-400{--tw-shadow:inset 0 0 0 1px var(--gray-400,#89888d)!important;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)!important}.\!gl-shadow-inner-1-red-500{--tw-shadow:inset 0 0 0 1px var(--red-500,#dd2b0e)!important;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)!important}.\!gl-shadow-inner-1-red-500,.\!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-inner-1-gray-400{--tw-shadow:inset 0 0 0 1px var(--gray-400,#89888d);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-inner-1-gray-400,.gl-shadow-inner-1-red-300{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-shadow-inner-1-red-300{--tw-shadow:inset 0 0 0 1px var(--red-300,#f57f6c);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-inner-1-red-500{--tw-shadow:inset 0 0 0 1px var(--red-500,#dd2b0e);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-inner-1-red-500,.gl-shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-shadow-md{--tw-shadow:0 2px 8px var(--gl-shadow-color-default,#05050629),0 0 2px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 2px 8px var(--tw-shadow-color),0 0 2px var(--tw-shadow-color)}.gl-shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;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-font-monospace{font-family:var(--default-mono-font,"GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-variant-ligatures:none}.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}}@media (min-width:768px){.md\:gl-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.\[\&\>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/ui",
3
- "version": "91.13.0",
3
+ "version": "91.14.0",
4
4
  "description": "GitLab UI Components",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -111,7 +111,7 @@
111
111
  "@babel/preset-env": "^7.25.4",
112
112
  "@babel/preset-react": "^7.24.7",
113
113
  "@cypress/grep": "^4.0.1",
114
- "@gitlab/eslint-plugin": "20.1.0",
114
+ "@gitlab/eslint-plugin": "20.2.1",
115
115
  "@gitlab/fonts": "^1.3.0",
116
116
  "@gitlab/stylelint-config": "6.2.1",
117
117
  "@gitlab/svgs": "3.114.0",
@@ -148,7 +148,7 @@
148
148
  "babel-loader": "^8.0.5",
149
149
  "bootstrap": "4.6.2",
150
150
  "cobertura-merge": "^1.0.4",
151
- "cypress": "13.14.1",
151
+ "cypress": "13.14.2",
152
152
  "cypress-axe": "^1.4.0",
153
153
  "cypress-real-events": "^1.11.0",
154
154
  "dompurify": "^3.1.2",
@@ -172,8 +172,8 @@
172
172
  "module-alias": "^2.2.2",
173
173
  "npm-run-all": "^4.1.5",
174
174
  "pikaday": "^1.8.0",
175
- "playwright": "^1.46.1",
176
- "playwright-core": "^1.46.1",
175
+ "playwright": "^1.47.0",
176
+ "playwright-core": "^1.47.0",
177
177
  "plop": "^2.5.4",
178
178
  "postcss": "8.4.28",
179
179
  "postcss-loader": "^7.0.2",
@@ -23,10 +23,10 @@ count separate from the input, use `GlFormCharacterCount`.
23
23
  },
24
24
  methods: {
25
25
  remainingCountText(count) {
26
- return n__('%d character remaining', '%d characters remaining', count)
26
+ return n__('%d character remaining.', '%d characters remaining.', count)
27
27
  },
28
28
  overLimitText(count) {
29
- return n__('%d character over limit', '%d characters over limit', count);
29
+ return n__('%d character over limit.', '%d characters over limit.', count);
30
30
  },
31
31
  },
32
32
  }
@@ -73,12 +73,12 @@ export default {
73
73
  <div>
74
74
  <small :class="['form-text', countTextClass]" aria-hidden="true">
75
75
  <!--
76
- @slot Internationalized over limit text. Example: `<template #over-limit-text="{ count }">{{ n__('%d character over limit', '%d characters over limit', count) }}</template>`
76
+ @slot Internationalized over limit text. Example: `<template #over-limit-text="{ count }">{{ n__('%d character over limit.', '%d characters over limit.', count) }}</template>`
77
77
  @binding {number} count
78
78
  -->
79
79
  <slot v-if="isOverLimit" name="over-limit-text" :count="Math.abs(remainingCount)"></slot>
80
80
  <!--
81
- @slot Internationalized character count text. Example: `<template #remaining-count-text="{ count }">{{ n__('%d character remaining', '%d characters remaining', count) }}</template>`
81
+ @slot Internationalized character count text. Example: `<template #remaining-count-text="{ count }">{{ n__('%d character remaining.', '%d characters remaining.', count) }}</template>`
82
82
  @binding {number} count
83
83
  -->
84
84
 
@@ -31,12 +31,12 @@ export default {
31
31
  minInvalidFeedback: {
32
32
  type: String,
33
33
  required: false,
34
- default: 'Must be after minimum date',
34
+ default: 'Must be after minimum date.',
35
35
  },
36
36
  maxInvalidFeedback: {
37
37
  type: String,
38
38
  required: false,
39
- default: 'Must be before maximum date',
39
+ default: 'Must be before maximum date.',
40
40
  },
41
41
  value: {
42
42
  type: String,
@@ -116,7 +116,7 @@ export default {
116
116
  >
117
117
  <template #over-limit-text="{ count }">
118
118
  <!--
119
- @slot Internationalized over character count text. Example: `<template #character-count-over-limit-text="{ count }">{{ n__('%d character over limit', '%d characters over limit', count) }}</template>`
119
+ @slot Internationalized over character count text. Example: `<template #character-count-over-limit-text="{ count }">{{ n__('%d character over limit.', '%d characters over limit.', count) }}</template>`
120
120
  @binding {number} count
121
121
  -->
122
122
  <slot name="character-count-over-limit-text" :count="count"></slot>
@@ -124,7 +124,7 @@ export default {
124
124
 
125
125
  <template #remaining-count-text="{ count }">
126
126
  <!--
127
- @slot Internationalized character count text. Example: `<template #remaining-character-count-text="{ count }">{{ n__('%d character remaining', '%d characters remaining', count) }}</template>`
127
+ @slot Internationalized character count text. Example: `<template #remaining-character-count-text="{ count }">{{ n__('%d character remaining.', '%d characters remaining.', count) }}</template>`
128
128
  @binding {number} count
129
129
  -->
130
130
 
@@ -0,0 +1,71 @@
1
+ <script>
2
+ import GlDuoChatContextItemPopover from '../duo_chat_context_item_popover/duo_chat_context_item_popover.vue';
3
+ import GlIcon from '../../../../../../base/icon/icon.vue';
4
+ import {
5
+ categoryValidator,
6
+ contextItemValidator,
7
+ formatIssueId,
8
+ formatMergeRequestId,
9
+ } from '../utils';
10
+ import {
11
+ CONTEXT_ITEM_TYPE_ISSUE,
12
+ CONTEXT_ITEM_TYPE_MERGE_REQUEST,
13
+ CONTEXT_ITEM_TYPE_PROJECT_FILE,
14
+ } from '../constants';
15
+
16
+ export default {
17
+ name: 'GlDuoChatContextItemMenuSearchItem',
18
+ components: { GlIcon, GlDuoChatContextItemPopover },
19
+ props: {
20
+ category: {
21
+ type: Object,
22
+ required: true,
23
+ validator: categoryValidator,
24
+ },
25
+ contextItem: {
26
+ type: Object,
27
+ required: true,
28
+ validator: contextItemValidator,
29
+ },
30
+ },
31
+ computed: {
32
+ title() {
33
+ return this.contextItem.metadata?.name || '';
34
+ },
35
+ secondaryText() {
36
+ switch (this.category.value) {
37
+ case CONTEXT_ITEM_TYPE_PROJECT_FILE:
38
+ return this.contextItem.metadata.info.relFilePath;
39
+ case CONTEXT_ITEM_TYPE_ISSUE:
40
+ return formatIssueId(this.contextItem.metadata.info.iid);
41
+ case CONTEXT_ITEM_TYPE_MERGE_REQUEST:
42
+ return formatMergeRequestId(this.contextItem.metadata.info.iid);
43
+ default:
44
+ return '';
45
+ }
46
+ },
47
+ },
48
+ };
49
+ </script>
50
+ <template>
51
+ <div class="gl-flex gl-flex-col">
52
+ <div class="gl-flex gl-items-center">
53
+ <gl-icon :name="category.icon" class="gl-mr-2 gl-shrink-0" data-testid="category-icon" />
54
+ <span>{{ title }}</span>
55
+ <gl-icon
56
+ :id="`info-icon-${contextItem.id}`"
57
+ name="information-o"
58
+ class="gl-ml-2 gl-shrink-0 gl-cursor-pointer gl-text-secondary"
59
+ :size="12"
60
+ />
61
+ <gl-duo-chat-context-item-popover
62
+ :context-item="contextItem"
63
+ :target="`info-icon-${contextItem.id}`"
64
+ placement="left"
65
+ />
66
+ </div>
67
+ <div class="gl-mt-1 gl-shrink-0 gl-whitespace-nowrap gl-text-secondary">
68
+ {{ secondaryText }}
69
+ </div>
70
+ </div>
71
+ </template>
@@ -5,14 +5,16 @@ import GlAlert from '../../../../../../base/alert/alert.vue';
5
5
  import { sprintf, translate } from '../../../../../../../utils/i18n';
6
6
  import { categoryValidator, contextItemsValidator } from '../utils';
7
7
  import GlDuoChatContextItemMenuSearchItemsLoading from './duo_chat_context_item_menu_search_items_loading.vue';
8
+ import GlDuoChatContextItemMenuSearchItem from './duo_chat_context_item_menu_search_item.vue';
8
9
 
9
10
  export default {
10
11
  name: 'GlDuoChatContextItemMenuSearchItems',
11
12
  components: {
12
13
  GlAlert,
13
- GlFormInput,
14
14
  GlDropdownItem,
15
+ GlDuoChatContextItemMenuSearchItem,
15
16
  GlDuoChatContextItemMenuSearchItemsLoading,
17
+ GlFormInput,
16
18
  },
17
19
  model: {
18
20
  prop: 'searchQuery',
@@ -77,8 +79,8 @@ export default {
77
79
  },
78
80
  },
79
81
  methods: {
80
- selectItem(item) {
81
- this.$emit('select', item);
82
+ selectItem(contextItem) {
83
+ this.$emit('select', contextItem);
82
84
  this.userInitiatedSearch = false;
83
85
  },
84
86
  setActiveIndex(index) {
@@ -114,20 +116,25 @@ export default {
114
116
  </div>
115
117
  <ul v-else class="gl-mb-1 gl-list-none gl-flex-row gl-pl-0">
116
118
  <gl-dropdown-item
117
- v-for="(item, index) in results"
119
+ v-for="(contextItem, index) in results"
118
120
  :id="`dropdown-item-${index}`"
119
- :key="item.id"
120
- :class="[{ 'active-command': index === activeIndex, disabled: !item.isEnabled }]"
121
- :tabindex="!item.isEnabled ? -1 : undefined"
121
+ :key="contextItem.id"
122
+ :class="{
123
+ 'active-command': index === activeIndex,
124
+ 'gl-cursor-not-allowed [&>button]:focus-within:!gl-shadow-none': !contextItem.isEnabled,
125
+ }"
126
+ :tabindex="!contextItem.isEnabled ? -1 : undefined"
122
127
  class="duo-chat-context-search-result-item"
123
128
  data-testid="search-result-item"
124
- @click="selectItem(item)"
129
+ @click="selectItem(contextItem)"
125
130
  >
126
131
  <div @mouseenter="setActiveIndex(index)">
127
- <div data-testid="search-result-item-details">
128
- <!-- Placeholder for upcoming GlDuoChatContextItemMenuSearchItem component -->
129
- {{ item.metadata.name }} {{ item.isEnabled ? '' : '(disabled)' }}
130
- </div>
132
+ <gl-duo-chat-context-item-menu-search-item
133
+ :context-item="contextItem"
134
+ :category="category"
135
+ :class="{ 'gl-text-secondary': !contextItem.isEnabled }"
136
+ data-testid="search-result-item-details"
137
+ />
131
138
  </div>
132
139
  </gl-dropdown-item>
133
140
  </ul>
@@ -6,11 +6,7 @@ import {
6
6
  CONTEXT_ITEM_TYPE_MERGE_REQUEST,
7
7
  CONTEXT_ITEM_TYPE_PROJECT_FILE,
8
8
  } from '../constants';
9
-
10
- const ID_PREFIXES = {
11
- issue: '#',
12
- merge_request: '!',
13
- };
9
+ import { formatIssueId, formatMergeRequestId } from '../utils';
14
10
 
15
11
  export default {
16
12
  name: 'DuoChatContextItemPopover',
@@ -19,9 +15,9 @@ export default {
19
15
  },
20
16
  props: {
21
17
  /**
22
- * The context item to display in the popover.
18
+ * The context contextItem to display in the popover.
23
19
  */
24
- item: {
20
+ contextItem: {
25
21
  type: Object,
26
22
  required: true,
27
23
  },
@@ -43,28 +39,36 @@ export default {
43
39
  },
44
40
  computed: {
45
41
  itemInfo() {
46
- return this.item.metadata?.info || {};
42
+ return this.contextItem.metadata?.info || {};
47
43
  },
48
44
  id() {
49
45
  const isIssuable =
50
- this.item.type === CONTEXT_ITEM_TYPE_ISSUE ||
51
- this.item.type === CONTEXT_ITEM_TYPE_MERGE_REQUEST;
46
+ this.contextItem.type === CONTEXT_ITEM_TYPE_ISSUE ||
47
+ this.contextItem.type === CONTEXT_ITEM_TYPE_MERGE_REQUEST;
52
48
  return isIssuable ? this.itemInfo.iid || '' : null;
53
49
  },
54
- idPrefix() {
55
- return ID_PREFIXES[this.item.type] || '';
50
+ formattedId() {
51
+ switch (this.contextItem.type) {
52
+ case CONTEXT_ITEM_TYPE_ISSUE:
53
+ return formatIssueId(this.id);
54
+ case CONTEXT_ITEM_TYPE_MERGE_REQUEST:
55
+ return formatMergeRequestId(this.id);
56
+ default:
57
+ return '';
58
+ }
56
59
  },
57
60
  filePath() {
58
- return this.item.type === CONTEXT_ITEM_TYPE_PROJECT_FILE
61
+ return this.contextItem.type === CONTEXT_ITEM_TYPE_PROJECT_FILE
59
62
  ? this.itemInfo.relFilePath || ''
60
63
  : null;
61
64
  },
62
65
  isEnabled() {
63
- return this.item.isEnabled !== false;
66
+ return this.contextItem.isEnabled !== false;
64
67
  },
65
68
  disabledMessage() {
66
- return Array.isArray(this.item.disabledReasons) && this.item.disabledReasons.length > 0
67
- ? this.item.disabledReasons.join(', ')
69
+ return Array.isArray(this.contextItem.disabledReasons) &&
70
+ this.contextItem.disabledReasons.length > 0
71
+ ? this.contextItem.disabledReasons.join(', ')
68
72
  : translate('DuoChatContextItemPopover.DisabledReason', 'This item is disabled');
69
73
  },
70
74
  },
@@ -78,12 +82,12 @@ export default {
78
82
  :target="target"
79
83
  triggers="hover focus"
80
84
  :placement="placement"
81
- :title="item.metadata.name"
85
+ :title="contextItem.metadata.name"
82
86
  custom-class="gl-duo-chat-item-popover"
83
87
  >
84
88
  <template #title>
85
89
  <span class="gl-text-sm gl-text-gray-500" data-testid="chat-context-popover-title">{{
86
- item.metadata.name
90
+ contextItem.metadata.name
87
91
  }}</span>
88
92
  </template>
89
93
  <div class="gl-p-3">
@@ -101,13 +105,13 @@ export default {
101
105
  </div>
102
106
  <div v-if="id !== null" class="gl-mb-2">
103
107
  <strong class="gl-mr-1">{{ translate('DuoChatContextItemPopover.IdLabel', 'ID:') }}</strong>
104
- <span>{{ idPrefix }}{{ id }}</span>
108
+ <span>{{ formattedId }}</span>
105
109
  </div>
106
110
  <div class="gl-mb-2">
107
111
  <strong class="gl-mr-1">{{
108
112
  translate('DuoChatContextItemPopover.TypeLabel', 'Type:')
109
113
  }}</strong>
110
- <span>{{ item.type }}</span>
114
+ <span>{{ contextItem.type }}</span>
111
115
  </div>
112
116
  <div v-if="!isEnabled" class="gl-text-red-500" data-testid="chat-context-popover-disabled">
113
117
  <strong class="gl-mr-1">{{
@@ -72,12 +72,12 @@ export default {
72
72
  toggleCollapse() {
73
73
  this.isCollapsed = !this.isCollapsed;
74
74
  },
75
- onRemoveItem(item) {
75
+ onRemoveItem(contextItem) {
76
76
  /**
77
- * Emitted when a context item should be removed.
78
- * @property {Object} item - The context item to be removed
77
+ * Emitted when a context contextItem should be removed.
78
+ * @property {Object} item - The context contextItem to be removed
79
79
  */
80
- this.$emit('remove', item);
80
+ this.$emit('remove', contextItem);
81
81
  },
82
82
  },
83
83
  };
@@ -99,20 +99,20 @@ export default {
99
99
  data-testid="chat-context-tokens-wrapper"
100
100
  >
101
101
  <gl-token
102
- v-for="item in selections"
103
- :key="item.id"
102
+ v-for="contextItem in selections"
103
+ :key="contextItem.id"
104
104
  :view-only="!removable"
105
105
  variant="default"
106
106
  class="gl-mb-2 gl-mr-2"
107
- @close="onRemoveItem(item)"
107
+ @close="onRemoveItem(contextItem)"
108
108
  >
109
- <div :id="`context-item-${item.id}-${selectionsId}`" class="gl-flex gl-items-center">
110
- <gl-icon :name="getIconName(item.type)" :size="12" class="gl-mr-1" />
111
- {{ item.metadata.name }}
109
+ <div :id="`context-item-${contextItem.id}-${selectionsId}`" class="gl-flex gl-items-center">
110
+ <gl-icon :name="getIconName(contextItem.type)" :size="12" class="gl-mr-1" />
111
+ {{ contextItem.metadata.name }}
112
112
  </div>
113
113
  <gl-duo-chat-context-item-popover
114
- :item="item"
115
- :target="`context-item-${item.id}-${selectionsId}`"
114
+ :context-item="contextItem"
115
+ :target="`context-item-${contextItem.id}-${selectionsId}`"
116
116
  placement="bottom"
117
117
  />
118
118
  </gl-token>
@@ -10,6 +10,10 @@ export const MOCK_CATEGORIES = [
10
10
  { label: 'Merge Requests', value: CONTEXT_ITEM_TYPE_MERGE_REQUEST, icon: 'merge-request' },
11
11
  ];
12
12
 
13
+ export function getMockCategory(categoryValue) {
14
+ return MOCK_CATEGORIES.find((cat) => cat.value === categoryValue);
15
+ }
16
+
13
17
  export const MOCK_CONTEXT_ITEM_FILE = {
14
18
  id: '123e4567-e89b-12d3-a456-426614174000',
15
19
  isEnabled: true,
@@ -27,3 +27,15 @@ export function contextItemValidator(item) {
27
27
  export function contextItemsValidator(items) {
28
28
  return Array.isArray(items) && items.every((item) => contextItemValidator(item));
29
29
  }
30
+
31
+ export function formatIssueId(iid) {
32
+ if (!iid) return '';
33
+
34
+ return `#${iid}`;
35
+ }
36
+
37
+ export function formatMergeRequestId(iid) {
38
+ if (!iid) return '';
39
+
40
+ return `!${iid}`;
41
+ }