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 @@