diff --git a/frontend/src/components/NewDeal.vue b/frontend/src/components/NewDeal.vue
index b9d3b324..95f6d225 100644
--- a/frontend/src/components/NewDeal.vue
+++ b/frontend/src/components/NewDeal.vue
@@ -11,7 +11,9 @@
v-model="newDeal[field.name]"
>
-
+
-
-
-
-
-
diff --git a/frontend/src/components/NewLead.vue b/frontend/src/components/NewLead.vue
index 79c21dc9..05ccf6ca 100644
--- a/frontend/src/components/NewLead.vue
+++ b/frontend/src/components/NewLead.vue
@@ -11,7 +11,7 @@
v-model="newLead[field.name]"
>
-
+
-
-
-
-
-
diff --git a/frontend/src/pages/Contact.vue b/frontend/src/pages/Contact.vue
index d37044a9..9ab75e2b 100644
--- a/frontend/src/pages/Contact.vue
+++ b/frontend/src/pages/Contact.vue
@@ -390,7 +390,7 @@ function getLeadRowObject(lead) {
},
status: {
label: lead.status,
- color: getLeadStatus(lead.status)?.color,
+ color: getLeadStatus(lead.status)?.iconColorClass,
},
email: lead.email,
mobile_no: lead.mobile_no,
@@ -415,7 +415,7 @@ function getDealRowObject(deal) {
annual_revenue: formatNumberIntoCurrency(deal.annual_revenue),
status: {
label: deal.status,
- color: getDealStatus(deal.status)?.color,
+ color: getDealStatus(deal.status)?.iconColorClass,
},
email: deal.email,
mobile_no: deal.mobile_no,
diff --git a/frontend/src/pages/Deal.vue b/frontend/src/pages/Deal.vue
index 40a74aee..8b72fdd0 100644
--- a/frontend/src/pages/Deal.vue
+++ b/frontend/src/pages/Deal.vue
@@ -20,14 +20,17 @@
-
diff --git a/frontend/src/pages/Leads.vue b/frontend/src/pages/Leads.vue
index 37684eb6..587d8609 100644
--- a/frontend/src/pages/Leads.vue
+++ b/frontend/src/pages/Leads.vue
@@ -152,7 +152,7 @@ const rows = computed(() => {
} else if (row == 'status') {
_rows[row] = {
label: lead.status,
- color: getLeadStatus(lead.status)?.color,
+ color: getLeadStatus(lead.status)?.iconColorClass,
}
} else if (row == 'lead_owner') {
_rows[row] = {
diff --git a/frontend/src/pages/Organization.vue b/frontend/src/pages/Organization.vue
index 87810ba9..41f96d29 100644
--- a/frontend/src/pages/Organization.vue
+++ b/frontend/src/pages/Organization.vue
@@ -454,7 +454,7 @@ function getLeadRowObject(lead) {
},
status: {
label: lead.status,
- color: getLeadStatus(lead.status)?.color,
+ color: getLeadStatus(lead.status)?.iconColorClass,
},
email: lead.email,
mobile_no: lead.mobile_no,
@@ -479,7 +479,7 @@ function getDealRowObject(deal) {
annual_revenue: formatNumberIntoCurrency(deal.annual_revenue),
status: {
label: deal.status,
- color: getDealStatus(deal.status)?.color,
+ color: getDealStatus(deal.status)?.iconColorClass,
},
email: deal.email,
mobile_no: deal.mobile_no,
diff --git a/frontend/src/stores/statuses.js b/frontend/src/stores/statuses.js
index fc9d840c..e38a8ff1 100644
--- a/frontend/src/stores/statuses.js
+++ b/frontend/src/stores/statuses.js
@@ -16,10 +16,8 @@ export const statusesStore = defineStore('crm-statuses', () => {
auto: true,
transform(statuses) {
for (let status of statuses) {
- status.color =
- status.color == 'black'
- ? '!text-gray-900'
- : `!text-${status.color}-600`
+ status.colorClass = colorClasses(status.color)
+ status.iconColorClass = colorClasses(status.color, true)
leadStatusesByName[status.name] = status
}
return statuses
@@ -35,16 +33,27 @@ export const statusesStore = defineStore('crm-statuses', () => {
auto: true,
transform(statuses) {
for (let status of statuses) {
- status.color =
- status.color == 'black'
- ? '!text-gray-900'
- : `!text-${status.color}-600`
+ status.colorClass = colorClasses(status.color)
+ status.iconColorClass = colorClasses(status.color, true)
dealStatusesByName[status.name] = status
}
return statuses
},
})
+ function colorClasses(color, onlyIcon = false) {
+ let textColor = `!text-${color}-600`
+ if (color == 'black') {
+ textColor = '!text-gray-900'
+ } else if (['gray', 'green'].includes(color)) {
+ textColor = `!text-${color}-700`
+ }
+
+ let bgColor = `!bg-${color}-100 hover:!bg-${color}-200 active:!bg-${color}-300`
+
+ return [textColor, onlyIcon ? '' : bgColor]
+ }
+
function getLeadStatus(name) {
return leadStatusesByName[name]
}
@@ -60,7 +69,10 @@ export const statusesStore = defineStore('crm-statuses', () => {
for (const status in statusesByName) {
options.push({
label: statusesByName[status].name,
- icon: () => h(IndicatorIcon, { class: statusesByName[status].color }),
+ icon: () =>
+ h(IndicatorIcon, {
+ class: statusesByName[status].iconColorClass,
+ }),
onClick: () => {
action && action('status', statusesByName[status].name)
},
diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js
index 704f5c8c..16d3d191 100644
--- a/frontend/tailwind.config.js
+++ b/frontend/tailwind.config.js
@@ -6,7 +6,7 @@ module.exports = {
'./node_modules/frappe-ui/src/components/**/*.{vue,js,ts,jsx,tsx}',
'../node_modules/frappe-ui/src/components/**/*.{vue,js,ts,jsx,tsx}',
],
- safelist: [{ pattern: /!text-/ }],
+ safelist: [{ pattern: /(!text|!bg|hover:!bg)-/ }],
theme: {
extend: {},
},