9292 :grandparent-id =" route.params.grandparentId"
9393 @open-setting =" isSettingsOpen = true"
9494 />
95- <lf-dropdown-item type =" danger" @click =" disconnectIntegration() " >
95+ <lf-dropdown-item type =" danger" @click =" isModalOpen = true " >
9696 <lf-icon name =" link-simple-slash" type =" regular" />
9797 Disconnect integration
9898 </lf-dropdown-item >
114114 v-if =" props.config.mappedReposComponent"
115115 :segment-id =" route.params.id"
116116 />
117+
118+ <lf-modal v-model =" isModalOpen" >
119+ <template #default >
120+ <div class =" px-6 pt-6 flex gap-4" >
121+ <div class =" min-w-10 w-10 h-10 rounded-full bg-red-50 flex items-center justify-center" >
122+ <lf-icon name =" link-simple-slash" class =" text-red-500" :size =" 16" />
123+ </div >
124+ <div class =" flex flex-col gap-6" >
125+ <div class =" flex flex-col gap-2" >
126+ <span class =" font-semibold" >Are you sure you want to disconnect this integration?</span >
127+ <p class =" text-gray-500 text-small" >
128+ Once disconnected, data will no longer sync from this source.
129+ You can reconnect anytime to resume syncing, but this action can’t be undone.
130+ </p >
131+ </div >
132+ <div class =" flex flex-col gap-1" >
133+ <span class =" font-semibold" >Type DISCONNECT to confirm</span >
134+ <lf-input v-model =" disconnectConfirm" placeholder =" DISCONNECT" class =" w-full" />
135+ </div >
136+ </div >
137+ </div >
138+ <div class =" px-6 py-4.5 bg-gray-50 mt-8 flex justify-end gap-4" >
139+ <lf-button type =" secondary-ghost-light" @click =" isModalOpen = false" >
140+ Cancel
141+ </lf-button >
142+ <lf-button type =" danger" :disabled =" disconnectConfirm !== 'DISCONNECT'" @click =" disconnectIntegration()" >
143+ Disconnect integration
144+ </lf-button >
145+ </div >
146+ </template >
147+ </lf-modal >
117148 </article >
118149</template >
119150
@@ -133,6 +164,8 @@ import { EventType, FeatureEventKey } from '@/shared/modules/monitoring/types/ev
133164import useProductTracking from ' @/shared/modules/monitoring/useProductTracking' ;
134165import { useRoute } from ' vue-router' ;
135166import { dateHelper } from ' @/shared/date-helper/date-helper' ;
167+ import LfModal from ' @/ui-kit/modal/Modal.vue' ;
168+ import LfInput from ' @/ui-kit/input/Input.vue' ;
136169
137170const props = defineProps <{
138171 config: IntegrationConfig ,
@@ -145,6 +178,9 @@ const route = useRoute();
145178const { doDestroy } = mapActions (' integration' );
146179const { findByPlatform } = mapGetters (' integration' );
147180
181+ const isModalOpen = ref (false );
182+ const disconnectConfirm = ref (' ' );
183+
148184const { trackEvent } = useProductTracking ();
149185
150186const integration = computed (() => findByPlatform .value (props .config .key ));
0 commit comments