diff --git a/jey_theme/public/js/jey_theme.js b/jey_theme/public/js/jey_theme.js index 346362e..dd3722c 100644 --- a/jey_theme/public/js/jey_theme.js +++ b/jey_theme/public/js/jey_theme.js @@ -250,6 +250,24 @@ iconContainer.appendChild(parts.chrome); } + var DESKTOP_LABEL_OVERRIDES = { + "Frappe HR": "HR", + "ERPNext Settings": "Settings" + }; + + function renameDesktopLabels() { + Object.keys(DESKTOP_LABEL_OVERRIDES).forEach(function (id) { + var newLabel = DESKTOP_LABEL_OVERRIDES[id]; + document.querySelectorAll('.desktop-icon[data-id="' + id + '"]').forEach(function (icon) { + var title = icon.querySelector(".icon-title"); + if (title && title.textContent.trim() !== newLabel) { + title.textContent = newLabel; + title.setAttribute("data-original-title", newLabel); + } + }); + }); + } + function processIcons() { document.querySelectorAll( ".desktop-icon > .icon-container:not(.jey-chrome-done)" @@ -262,6 +280,7 @@ ".desktop-icon > .icon-container.folder-icon:not(.jey-chrome-done)" ).forEach(wrapIcon); + renameDesktopLabels(); staggerAnimations(); } @@ -325,6 +344,200 @@ }); } + /* ================================================================== + Workspace sidebar item icon remap + Rewrites inside .sidebar-item-icon[item-icon] + to point at a different but semantically related sprite id. + Idempotent via .jey-side-item-done marker class. + ================================================================== */ + + var SIDEBAR_ITEM_ICON_MAP = { + /* ERPNext / timeless legacy names */ + "home": "house", + "accounting": "landmark", + "assets": "warehouse", + "buying": "shopping-cart", + "crm": "handshake", + "customer": "contact-round", + "customization": "palette", + "expenses": "banknote-arrow-up", + "getting-started": "rocket", + "hr": "users-round", + "integration": "plug-2", + "liabilities": "scale", + "loan": "piggy-bank", + "money-coins-1": "coins", + "non-profit": "heart-handshake", + "organization": "building-2", + "project": "folder-kanban", + "projects": "kanban", + "quality": "badge-check", + "sell": "trending-up", + "setting": "settings-2", + "stock": "package-2", + "support": "headphones", + "tool": "wrench", + "web": "earth", + "website": "globe", + "chart": "chart-column", + "criticize": "thumbs-down", + "review": "book-open-check", + "image-view": "image", + "up-arrow": "arrow-up", + "table_2": "table-properties", + "book-text": "library", + + /* Lucide names found in workspace_sidebar fixtures */ + "arrow-down-from-line": "download", + "arrow-left-to-line": "panel-left-close", + "arrow-right-from-line": "log-out", + "at-sign": "mail", + "badge-alert": "triangle-alert", + "badge-cent": "circle-dollar-sign", + "banknote-arrow-up": "trending-up", + "banknote-x": "receipt", + "bell": "bell-ring", + "bell-dot": "bell-ring", + "bell-ring": "megaphone", + "book-open-check": "clipboard-check", + "book-open-text": "book-marked", + "book-user": "contact-round", + "briefcase-business": "briefcase", + "building-2": "landmark", + "cable": "network", + "calendar-check": "calendar-check-2", + "calendar-check-2": "calendar-fold", + "calendar-clock": "timer", + "calendar-days": "calendar-range", + "calendar-heart": "heart", + "calendar-range": "calendar-fold", + "calendar-sync": "rotate-cw", + "caravan": "tent", + "circle-dollar-sign": "coins", + "circle-user-round": "user-round", + "clipboard-check": "clipboard-list", + "clipboard-pen": "notebook-pen", + "computer": "monitor", + "database": "hard-drive", + "database-backup": "save", + "dollar-sign": "coins", + "earth": "globe", + "factory": "warehouse", + "file": "file-text", + "file-lock": "shield", + "file-question-mark": "file-text", + "file-up": "upload", + "file-user": "contact-round", + "flag": "flame", + "folder-tree": "list-tree", + "funnel": "filter", + "git-pull-request-arrow": "git-branch", + "goal": "target", + "graduation-cap": "school", + "grid-2x2-check": "layout-grid", + "hammer": "wrench", + "heading": "text", + "heart-pulse": "stethoscope", + "import": "file-up", + "inspection-panel": "clipboard-check", + "laptop": "monitor", + "layout-dashboard": "gauge", + "lightbulb": "zap", + "link": "link-2", + "list": "list-checks", + "list-end": "list-ordered", + "list-todo": "clipboard-list", + "list-tree": "folder-tree", + "lock-keyhole": "shield", + "lock-keyhole-open": "shield-alert", + "logs": "scroll-text", + "mail": "mail-open", + "mail-x": "inbox", + "message-square-reply": "speech", + "milestone": "flag", + "monitor-check": "square-check", + "move-horizontal": "arrow-left-right", + "notebook-pen": "square-pen", + "notebook-text": "notepad-text", + "notepad-text": "scroll-text", + "orbit": "atom", + "panel-bottom-close": "panel-top-open", + "panel-top-close": "panel-bottom-open", + "pen-tool": "pen-line", + "person-standing": "user-round", + "piggy-bank": "vault", + "plane": "send", + "pointer": "mouse-pointer-2", + "printer": "file-output", + "receipt": "receipt-text", + "receipt-text": "scroll-text", + "repeat": "rotate-cw", + "repeat-2": "rotate-ccw", + "scroll-text": "book-text", + "server": "database", + "settings": "sliders-horizontal", + "sheet": "file-spreadsheet", + "split": "git-branch", + "sprout": "leaf", + "square-activity": "heart-pulse", + "square-pen": "pen-line", + "square-user-round": "contact-round", + "star": "sparkles", + "table": "table-2", + "thumbs-up": "heart", + "trash": "archive", + "trending-down": "chart-line", + "triangle": "triangle-alert", + "truck": "ship", + "tv-minimal": "monitor", + "upload": "cloud-upload", + "user": "user-round", + "user-cog": "user-round-cog", + "user-lock": "shield", + "user-round": "circle-user-round", + "user-round-check": "user-check", + "user-round-minus": "user-x", + "user-star": "award", + "users": "users-round", + "users-round": "contact-round", + "videotape": "film", + "wallpaper": "image", + "washing-machine": "container", + "webhook": "cable" + }; + + function processSidebarItemIcons() { + var nodes = document.querySelectorAll( + ".body-sidebar .sidebar-item-icon[item-icon]:not(.jey-side-item-done)" + ); + if (!nodes.length) return; + + for (var i = 0; i < nodes.length; i++) { + var span = nodes[i]; + var from = (span.getAttribute("item-icon") || "").trim().toLowerCase(); + + // Always mark done — even on unknown / identity — so we never revisit. + span.classList.add("jey-side-item-done"); + + var to = SIDEBAR_ITEM_ICON_MAP[from]; + if (!to || to === from) continue; + + var useEl = span.querySelector("svg > use"); + if (!useEl) continue; + + var newHref = "#icon-" + to; + if (useEl.getAttribute("href") !== newHref) { + useEl.setAttribute("href", newHref); + } + if (useEl.hasAttribute("xlink:href") && + useEl.getAttribute("xlink:href") !== newHref) { + useEl.setAttribute("xlink:href", newHref); + } + span.setAttribute("data-jey-orig-icon", from); + span.setAttribute("item-icon", to); + } + } + /* ================================================================== Rebuild all icons (called on theme switch) ================================================================== */ @@ -349,6 +562,7 @@ processIcons(); processContextMenuIcons(); processSidebarIcons(); + processSidebarItemIcons(); } // Expose for theme switcher @@ -358,7 +572,7 @@ Boot ================================================================== */ - function processAll() { processIcons(); processContextMenuIcons(); processSidebarIcons(); } + function processAll() { processIcons(); processContextMenuIcons(); processSidebarIcons(); processSidebarItemIcons(); } $(document).on("page-change", processAll);