Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
61b5675
feat: update header and tabs
emlimlf Jan 20, 2026
4baaea1
feat: update card borders and github integration status
emlimlf Jan 21, 2026
125bcdb
fix: github mapping display
emlimlf Jan 21, 2026
cc69c20
chore: changed integration description text
emlimlf Jan 21, 2026
4e23589
feat: update header and tabs
emlimlf Jan 20, 2026
1549c4e
feat: update card borders and github integration status
emlimlf Jan 21, 2026
265e3c0
fix: github mapping display
emlimlf Jan 21, 2026
ce60eab
chore: changed integration description text
emlimlf Jan 21, 2026
fd3a0c4
Merge branch 'feat/integrations-ui-improvement' of github.com:CrowdDo…
emlimlf Jan 21, 2026
83c3057
chore: revert to previous status display
emlimlf Jan 21, 2026
2125949
fix: github footer display
emlimlf Jan 22, 2026
56f9f73
feat: changed github mapping drawer to match new design
emlimlf Jan 22, 2026
e2ab9b1
fix: git footer display
emlimlf Jan 22, 2026
bdfc015
chore: changed all button drawers to rounded
emlimlf Jan 22, 2026
4f600c7
chore: fix all integration drawwers
emlimlf Jan 22, 2026
35cc253
feat: changed UI for git and gerrit drawers
emlimlf Jan 23, 2026
9332d57
chore: reorder integrations list
emlimlf Jan 23, 2026
571615a
Merge branch 'main' into feat/integrations-ui-improvement
emlimlf Jan 23, 2026
57ba316
feat: changed git drawer ui design
emlimlf Jan 23, 2026
c103160
feat: added disabled tooltip to git drawer disconnect
emlimlf Jan 23, 2026
d9a1f47
Merge branch 'main' into feat/integrations-ui-improvement
emlimlf Jan 26, 2026
1ea079c
chore: address PR comments
emlimlf Jan 26, 2026
a11edb5
feat: added connected repo message to drawers
emlimlf Jan 26, 2026
a282333
fix: notification text for gerrit and gitlab
emlimlf Jan 27, 2026
a240262
Merge branch 'main' into feat/integrations-ui-improvement
emlimlf Jan 28, 2026
2d7b032
Merge branch 'main' into feat/integrations-ui-improvement
emlimlf Jan 29, 2026
47d4eb2
feat: redesign gerrit drawer
emlimlf Jan 29, 2026
d223e93
Merge branch 'main' into feat/integrations-ui-improvement
emlimlf Jan 29, 2026
ac957e7
Merge branch 'main' into feat/integrations-ui-improvement
emlimlf Feb 3, 2026
fccafc4
fix: minor spacing and font issues
emlimlf Feb 3, 2026
f931f29
chore: added text-neutral class
emlimlf Feb 3, 2026
a2c1fd6
Merge branch 'main' into feat/integrations-ui-improvement
emlimlf Feb 3, 2026
ebda412
fix: lint issue
emlimlf Feb 3, 2026
a20b275
fix: missing source platform groupings
emlimlf Feb 4, 2026
b38c211
chore: changed all drawer footer buttons
emlimlf Feb 4, 2026
2ba1474
fix: bug on counting git params
emlimlf Feb 4, 2026
dedd38c
fix: github mappings display
emlimlf Feb 4, 2026
9e68781
chore: added brand colors and drawer shadow
emlimlf Feb 4, 2026
45ca989
fix: backend lint issue
emlimlf Feb 4, 2026
4ce6275
fix: pr comment issues
emlimlf Feb 4, 2026
d15ac4e
fix: minor font issues on params component
emlimlf Feb 4, 2026
c4452f6
fix: jira and confluence revert issue
emlimlf Feb 4, 2026
531c4cd
fix: icons size for connected repo message
emlimlf Feb 4, 2026
d1b4973
fix: repository tooltip dots underline
emlimlf Feb 4, 2026
6bb3cca
Merge branch 'main' into feat/integrations-ui-improvement
emlimlf Feb 5, 2026
61bf39f
feat: implemented confirmation on discard changes for integration drawer
emlimlf Feb 5, 2026
88f8b56
Merge branch 'main' into feat/integrations-ui-improvement
emlimlf Feb 6, 2026
99a38b2
chore: remove full URL from manage git URLs
emlimlf Feb 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions backend/src/services/integrationService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ import {
softDeleteRepositories,
} from '@crowd/data-access-layer/src/repositories'
import {
getMappedAllWithSegmentName,
getMappedRepos,
getMappedWithSegmentName,
hasMappedRepos,
} from '@crowd/data-access-layer/src/segments'
import {
Expand Down Expand Up @@ -2683,10 +2683,10 @@ export default class IntegrationService {
getMappedRepos(qx, segmentId, PlatformType.GITHUB_NANGO),
getMappedRepos(qx, segmentId, PlatformType.GITLAB),
])
const project = await getMappedWithSegmentName(qx, segmentId, githubPlatforms)
const projects = await getMappedAllWithSegmentName(qx, segmentId, githubPlatforms)

return {
project,
projects,
repositories: [...githubMappedRepos, ...githubNangoMappedRepos, ...gitlabMappedRepos],
}
}
Expand Down
44 changes: 44 additions & 0 deletions frontend/config/styles/components/button.scss
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,27 @@
--lf-btn-secondary-ghost-loading-background: var(--lf-color-transparent);
--lf-btn-secondary-ghost-loading-border: var(--lf-color-transparent);

/* Danger Ghost */
--lf-btn-danger-ghost-text: var(--lf-color-red-500);
--lf-btn-danger-ghost-background: var(--lf-color-transparent);
--lf-btn-danger-ghost-border: var(--lf-color-transparent);
--lf-btn-danger-ghost-shadow: var(--shadow-none);
// Hover
--lf-btn-danger-ghost-hover-text: var(--lf-color-red-500);
--lf-btn-danger-ghost-hover-background: var(--lf-color-red-100);
--lf-btn-danger-ghost-hover-border: var(--lf-color-red-100);
// Active
--lf-btn-danger-ghost-active-text: var(--lf-color-red-500);
--lf-btn-danger-ghost-active-background: var(--lf-color-red-100);
--lf-btn-danger-ghost-active-border: var(--lf-color-red-100);
// Disabled
--lf-btn-danger-ghost-disabled-text: var(--lf-color-red-200);
--lf-btn-danger-ghost-disabled-background: var(--lf-color-transparent);
--lf-btn-danger-ghost-disabled-border: var(--lf-color-transparent);
// Loading
--lf-btn-danger-ghost-loading-text: var(--lf-color-red-200);
--lf-btn-danger-ghost-loading-background: var(--lf-color-transparent);
--lf-btn-danger-ghost-loading-border: var(--lf-color-transparent);

/* Secondary Gray */
--lf-btn-secondary-gray-text: var(--lf-color-primary-500);
Expand Down Expand Up @@ -272,4 +293,27 @@
--lf-btn-secondary-link-loading-text: var(--lf-color-gray-400);
--lf-btn-secondary-link-loading-background: var(--lf-color-transparent);
--lf-btn-secondary-link-loading-border: var(--lf-color-transparent);

/* Outline */
--lf-btn-outline-text: var(--lf-color-neutral-900);
--lf-btn-outline-background: var(--lf-color-white);
--lf-btn-outline-border: var(--lf-color-neutral-200);
--lf-btn-outline-shadow: var(--shadow-none);
// Hover
--lf-btn-outline-hover-text: var(--lf-color-neutral-900);
--lf-btn-outline-hover-background: var(--lf-color-neutral-50);
--lf-btn-outline-hover-border: var(--lf-color-neutral-200);
// Active
--lf-btn-outline-active-text: var(--lf-color-neutral-900);
--lf-btn-outline-active-background: var(--lf-color-neutral-50);
--lf-btn-outline-active-border: var(--lf-color-neutral-200);
// Disabled
--lf-btn-outline-disabled-text: var(--lf-color-neutral-400);
--lf-btn-outline-disabled-background: var(--lf-color-white);
--lf-btn-outline-disabled-border: var(--lf-color-neutral-200);
// Loading
--lf-btn-outline-loading-text: var(--lf-color-neutral-400);
--lf-btn-outline-loading-background: var(--lf-color-white);
--lf-btn-outline-loading-border: var(--lf-color-neutral-200);

}
14 changes: 2 additions & 12 deletions frontend/config/styles/components/switch.scss
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,9 @@

// Disabled Unchecked
--lf-switch-disabled-unchecked-handle: var(--lf-color-white);

// Disabled Checked
--lf-switch-disabled-background: var(--lf-color-gray-200);
--lf-switch-disabled-checked-handle: var(--lf-color-white);

/* ---------------------------------- *\
Switch sizes
\* ---------------------------------- */

/* Tiny */
--lf-switch-tiny-height: #{rem(16)};
--lf-switch-tiny-width: #{rem(30)};
--lf-switch-tiny-font-size: #{rem(12)};
--lf-switch-tiny-line-height: #{rem(15)};
--lf-switch-disabled-checked-background: var(--lf-color-primary-500);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed CSS variables break tiny switch size

Medium Severity

The --lf-switch-tiny-* CSS custom properties (height, width, font-size, line-height) were removed from the variables definition. However, ui-kit/switch/switch.scss still references these variables in the &--tiny selector. Components using size="tiny" (like discourse-settings-drawer.vue) will now have broken styling because the variables they depend on are undefined.

Fix in Cursor Fix in Web


/* Small */
--lf-switch-small-height: #{rem(20)};
Expand Down
25 changes: 25 additions & 0 deletions frontend/config/styles/variables/_colors.scss
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,18 @@
--lf-color-secondary-200: #99AFC9;
--lf-color-secondary-100: #CCD7E4;
--lf-color-secondary-50: #E6EBF2;

// Brand
--lf-color-brand-900: #000816;
--lf-color-brand-800: #002648;
--lf-color-brand-700: #004880;
--lf-color-brand-600: #006DBE;
--lf-color-brand-500: #0094FF;
--lf-color-brand-400: #54ABFF;
--lf-color-brand-300: #83C1FF;
--lf-color-brand-200: #ADD6FF;
--lf-color-brand-100: #D6EBFF;
--lf-color-brand-50: #EBF5FF;

// Gray
--lf-color-gray-900: #111827;
Expand All @@ -45,6 +57,19 @@
--lf-color-gray-100: #F3F4F6;
--lf-color-gray-50: #F9FAFB;

// Neutral
--lf-color-neutral-900: #0F172B;
--lf-color-neutral-800: #1D293D;
--lf-color-neutral-700: #314158;
--lf-color-neutral-600: #45556C;
--lf-color-neutral-500: #62748E;
--lf-color-neutral-400: #90A1B9;
--lf-color-neutral-300: #CAD5E2;
--lf-color-neutral-250: #e6e6e6;
--lf-color-neutral-200: #E2E8F0;
--lf-color-neutral-100: #F1F5F9;
--lf-color-neutral-50: #F8FAFC;

// Red
--lf-color-red-900: #7F1D1D;
--lf-color-red-800: #991B1B;
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 21 additions & 2 deletions frontend/src/assets/scss/drawer.scss
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
.el-drawer {
@apply opacity-100;
--el-drawer-padding-primary: 24px;
--el-drawer-padding-primary: 20px 24px;
box-shadow: -4px 0px 10px rgba(0, 0, 0, 0.05);
overflow: unset;

&__header {
@apply mb-4;
Expand All @@ -12,7 +13,25 @@
}

&__footer {
@apply p-6 bg-gray-50 border-t border-gray-200;
@apply px-6 py-5 bg-gray-50 border-t border-gray-100 bg-white;
position: relative;

&::before {
content: '';
position: absolute;
top: -20px;
left: 0;
right: 0;
height: 20px;
background: linear-gradient(to top, rgba(0, 0, 0, 0.06), transparent);
pointer-events: none;
opacity: 0;
transition: opacity 0.2s ease;
}
}

&.has-scroll .el-drawer__footer::before {
opacity: 1;
}

&__close-btn {
Expand Down
16 changes: 16 additions & 0 deletions frontend/src/assets/scss/form/input.scss
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,22 @@
border: 1px solid var(--el-input-focus-border-color);
}
}

&.is-rounded .el-input__wrapper{
@apply rounded-full;
}
}

.input-label-container {
@apply border border-solid border-gray-200 rounded-full flex items-stretch;

span {
@apply text-gray-900 text-small px-3 bg-gray-50 border-r border-r-gray-200 flex items-center
rounded-l-full;
}
.el-input__wrapper{
@apply border-none rounded-l-none rounded-r-full #{!important};
}
}

// Inner input/textarea color
Expand Down
12 changes: 12 additions & 0 deletions frontend/src/assets/scss/form/select.scss
Original file line number Diff line number Diff line change
Expand Up @@ -138,3 +138,15 @@
}
}
}

.el-select.el-select--pill {
.el-select__wrapper {
&.el-tooltip__trigger {
@apply rounded-full;
}

.el-select__suffix i{
@apply text-gray-900;
}
}
}
4 changes: 4 additions & 0 deletions frontend/src/assets/scss/layout.scss
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,7 @@ input:-webkit-autofill:active {
transition: background-color 5000s ease-in-out 0s;
-webkit-text-fill-color: #000 !important;
}

.el-overlay .el-splitter-panel{
overflow: unset;
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<template>
<lf-button
type="secondary"
type="outline"
@click="isConfluenceSettingsDrawerVisible = true"
>
<lf-icon name="link-simple" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,20 @@
<app-drawer
v-model="isVisible"
custom-class="integration-confluence-drawer"
size="600px"
title="Confluence"
pre-title="Integration"
has-border
close-on-click-modal="true"
:close-function="canClose"
@close="cancel"
>
<template #beforeTitle>
<img class="min-w-6 h-6 mr-2" :src="logoUrl" alt="Confluence logo" />
</template>
<template #belowTitle>
<drawer-description integration-key="confluence" />
</template>
<template #content>
<div class="text-gray-900 text-sm font-medium">
Authentication
Expand Down Expand Up @@ -110,29 +116,19 @@
</template>

<template #footer>
<div>
<lf-button
type="secondary-gray"
size="medium"
class="mr-4"
:disabled="loading"
@click="cancel"
>
Cancel
</lf-button>
<lf-button
id="confluenceConnect"
type="primary"
size="medium"
:disabled="$v.$invalid || loading"
:loading="loading"
@click="connect"
>
{{ integration?.settings ? 'Update' : 'Connect' }}
</lf-button>
</div>
<drawer-footer-buttons
:integration="props.integration"
:is-edit-mode="!!props.integration"
:has-form-changed="hasFormChanged"
:is-loading="loading"
:is-submit-disabled="$v.$invalid || !hasFormChanged || loading"
:cancel="cancel"
:revert-changes="revertChanges"
:connect="connect"
/>
</template>
</app-drawer>
<changes-confirmation-modal ref="changesConfirmationModalRef" />
</template>

<script setup lang="ts">
Expand All @@ -153,6 +149,9 @@ import { Platform } from '@/shared/modules/platform/types/Platform';
import LfButton from '@/ui-kit/button/Button.vue';
import AppArrayInput from '@/shared/form/array-input.vue';
import LfIcon from '@/ui-kit/icon/Icon.vue';
import DrawerDescription from '@/modules/admin/modules/integration/components/drawer-description.vue';
import DrawerFooterButtons from '@/modules/admin/modules/integration/components/drawer-footer-buttons.vue';
import ChangesConfirmationModal from '@/modules/admin/modules/integration/components/changes-confirmation-modal.vue';

const emit = defineEmits(['update:modelValue']);
const props = defineProps({
Expand All @@ -175,6 +174,7 @@ const props = defineProps({
});

const { trackEvent } = useProductTracking();
const changesConfirmationModalRef = ref<InstanceType<typeof ChangesConfirmationModal> | null>(null);

const loading = ref(false);
const form = reactive({
Expand All @@ -186,7 +186,7 @@ const form = reactive({
spaces: [''],
});

const { formSnapshot } = formChangeDetector(form);
const { formSnapshot, hasFormChanged } = formChangeDetector(form);
const $v = useVuelidate({
url: { required },
username: { required },
Expand All @@ -198,6 +198,22 @@ const $v = useVuelidate({
},
}, form, { $stopPropagation: true });

const revertChanges = () => {
if (props.integration?.settings) {
form.url = props.integration.settings.url;
form.username = props.integration.settings.username || '';
form.apiToken = props.integration.settings.apiToken || '';
form.orgAdminApiToken = props.integration.settings.orgAdminApiToken || '';
form.orgAdminId = props.integration.settings.orgAdminId || '';
if (props.integration?.settings.space) {
form.spaces = [props.integration?.settings.space.key];
} else {
form.spaces = [...(props.integration?.settings.spaces || [])];
}
formSnapshot();
}
};

const { doConfluenceConnect } = mapActions('integration');
const isVisible = computed({
get() {
Expand Down Expand Up @@ -228,7 +244,7 @@ onMounted(() => {
if (props.integration?.settings.space) {
form.spaces = [props.integration?.settings.space.key];
} else {
form.spaces = props.integration?.settings.spaces;
form.spaces = [...(props.integration?.settings.spaces || [])];
}
}
formSnapshot();
Expand All @@ -238,6 +254,21 @@ const cancel = () => {
isVisible.value = false;
};

const canClose = (done: (value: boolean) => void) => {
if (hasFormChanged.value) {
changesConfirmationModalRef.value?.open().then((discardChanges: boolean) => {
if (discardChanges) {
revertChanges();
done(false);
} else {
done(true);
}
});
} else {
done(false);
}
};

const connect = async () => {
loading.value = true;

Expand Down
2 changes: 1 addition & 1 deletion frontend/src/config/integrations/confluence/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const confluence: IntegrationConfig = {
key: 'confluence',
name: 'Confluence',
image,
description: 'Connect Confluence to sync documentation activities from your repos.',
description: 'Sync documentation activities from your spaces.',
connectComponent: ConfluenceConnect,
connectedParamsComponent: ConfluenceParams,
dropdownComponent: ConfluenceDropdown,
Expand Down
Loading