diff --git a/.gitignore b/.gitignore
index d7fe2a28f1..dd8c4be593 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,3 +36,4 @@ helpdesk/public/frontend
helpdesk/public/node_modules
helpdesk/www/helpdesk/index.html
desk/components.d.ts
+desk/stats.html
\ No newline at end of file
diff --git a/desk/auto-imports.d.ts b/desk/auto-imports.d.ts
index be867fcf1f..acddf52f0c 100644
--- a/desk/auto-imports.d.ts
+++ b/desk/auto-imports.d.ts
@@ -6,7 +6,8 @@
// biome-ignore lint: disable
export {}
declare global {
+ const LucideAlignJustify: typeof import('~icons/lucide/align-justify')['default']
const LucideFileSearch: typeof import('~icons/lucide/file-search')['default']
const LucideKeyboard: typeof import('~icons/lucide/keyboard')['default']
- const LucideSearch: typeof import('~icons/lucide/search')['default']
+ const LucideSearch: typeof import("~icons/lucide/search")["default"]
}
diff --git a/desk/lucide.ts b/desk/lucide.ts
deleted file mode 100644
index c4b0922bb9..0000000000
--- a/desk/lucide.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import * as LucideIcons from "lucide-static";
-
-const icons = {};
-for (const icon in LucideIcons) {
- let iconSvg = LucideIcons[icon];
- if (icon == "default") {
- continue;
- }
-
- // set stroke-width to 1.5
- if (iconSvg && iconSvg.includes("stroke-width")) {
- iconSvg = iconSvg.replace(/stroke-width="2"/g, 'stroke-width="1.5"');
- }
- icons[icon] = iconSvg;
-
- const dashKeys = camelToDash(icon);
- for (const dashKey of dashKeys) {
- if (dashKey !== icon) {
- icons[dashKey] = iconSvg;
- }
- }
-}
-
-export default icons;
-
-function camelToDash(key) {
- // barChart2 -> bar-chart-2
- const withNumber = key.replace(/[A-Z0-9]/g, (m) => "-" + m.toLowerCase());
- // barChart2 -> bar-chart2
- const withoutNumber = key.replace(/[A-Z]/g, (m) => "-" + m.toLowerCase());
-
- if (withNumber !== withoutNumber) {
- // both are required because unplugin icon resolver doesn't put a dash before numbers
- return [withNumber, withoutNumber];
- }
- return [withNumber];
-}
diff --git a/desk/package.json b/desk/package.json
index aaec15da2b..b6c5ce33b1 100644
--- a/desk/package.json
+++ b/desk/package.json
@@ -10,11 +10,6 @@
},
"dependencies": {
"@headlessui/vue": "^1.7.22",
- "@iconify-json/lucide": "^1.1.99",
- "@iconify-json/ph": "^1.1.5",
- "@iconify/tools": "^2.2.6",
- "@iconify/vue": "^4.1.1",
- "@tailwindcss/line-clamp": "^0.4.4",
"@tailwindcss/typography": "^0.5.9",
"@tiptap/core": "^2.2.4",
"@twilio/voice-sdk": "^2.15.0",
@@ -23,37 +18,29 @@
"@vueuse/core": "^13.8.0",
"@vueuse/integrations": "^13.8.0",
"dayjs": "^1.11.7",
- "echarts": "^5.4.1",
- "frappe-ui": "0.1.192",
+ "frappe-ui": "0.1.224",
"gemoji": "^8.1.0",
- "lodash": "^4.17.21",
- "lucide-static": "^0.276.0",
"mime": "^3.0.0",
"pinia": "^2.0.33",
- "pluralize": "^8.0.0",
"sanitize-html": "^2.10.0",
"socket.io-client": "^4.7.2",
- "unplugin-icons": "^0.16.1",
- "unplugin-vue-components": "^0.25.2",
- "vee-validate": "^4.8.2",
"vue": "^3.5.14",
- "vue-echarts": "^6.5.4",
"vue-router": "^4.2.2",
"vuedraggable": "^4.1.0",
"zod": "^3.21.4"
},
- "resolutions": {
- "cheerio": "1.0.0-rc.12",
- "prosemirror-model": "1.25.1"
- },
"devDependencies": {
"@vitejs/plugin-vue-jsx": "^3.0.1",
+ "autoprefixer": "^10.4.13",
+ "postcss": "^8.4.5",
"prettier": "2.8.4",
+ "tailwindcss": "^3.4.15",
"typescript": "^5.0.2",
"vite": "^4.4.9",
- "vite-plugin-pwa": "^0.20.5",
- "autoprefixer": "^10.4.13",
- "postcss": "^8.4.5",
- "tailwindcss": "^3.4.15"
+ "vite-plugin-pwa": "0.15.0"
+ },
+ "resolutions": {
+ "cheerio": "1.0.0-rc.12",
+ "prosemirror-model": "1.25.1"
}
}
diff --git a/desk/src/components/CommunicationArea.vue b/desk/src/components/CommunicationArea.vue
index 133b595c0f..10023974af 100644
--- a/desk/src/components/CommunicationArea.vue
+++ b/desk/src/components/CommunicationArea.vue
@@ -99,9 +99,9 @@ import { CommentTextEditor, EmailEditor, TypingIndicator } from "@/components";
import { CommentIcon, EmailIcon } from "@/components/icons/";
import { useDevice } from "@/composables";
import { useScreenSize } from "@/composables/screen";
+import { useShortcut } from "@/composables/shortcuts";
import { showCommentBox, showEmailBox } from "@/pages/ticket/modalStates";
import { ref, watch } from "vue";
-import { useShortcut } from "@/composables/shortcuts";
const emit = defineEmits(["update"]);
const content = defineModel("content");
diff --git a/desk/src/components/EmailContent.vue b/desk/src/components/EmailContent.vue
index 4cd85d1e2e..85e650ea69 100644
--- a/desk/src/components/EmailContent.vue
+++ b/desk/src/components/EmailContent.vue
@@ -6,9 +6,9 @@
/>
-
-
-
diff --git a/desk/src/components/layouts/Sidebar.vue b/desk/src/components/layouts/Sidebar.vue
index 54612f4900..93c654c6a7 100644
--- a/desk/src/components/layouts/Sidebar.vue
+++ b/desk/src/components/layouts/Sidebar.vue
@@ -197,7 +197,7 @@ import {
useOnboarding,
} from "frappe-ui/frappe";
-import HelpIcon from "frappe-ui/frappe/Icons/HelpIcon.vue";
+import { HelpIcon } from "frappe-ui/icons";
import { storeToRefs } from "pinia";
import { computed, h, markRaw, onMounted, ref } from "vue";
import { useRoute, useRouter } from "vue-router";
diff --git a/desk/src/components/ticket-agent/TicketActivityPanel.vue b/desk/src/components/ticket-agent/TicketActivityPanel.vue
index bec65bb9b3..27a5476329 100644
--- a/desk/src/components/ticket-agent/TicketActivityPanel.vue
+++ b/desk/src/components/ticket-agent/TicketActivityPanel.vue
@@ -46,13 +46,13 @@