fix(web-ui): normalize lucide icon names across SIP proxy views
This commit is contained in:
@@ -1,5 +1,11 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2026-04-11 - 1.19.2 - fix(web-ui)
|
||||||
|
normalize lucide icon names across SIP proxy views
|
||||||
|
|
||||||
|
- Updates icon identifiers to the expected PascalCase lucide format in app navigation, calls, IVR, overview, providers, and voicemail views.
|
||||||
|
- Fixes UI icon rendering for stats cards and action menus such as transfer, delete, status, and call direction indicators.
|
||||||
|
|
||||||
## 2026-04-10 - 1.19.1 - fix(readme)
|
## 2026-04-10 - 1.19.1 - fix(readme)
|
||||||
refresh documentation for jitter buffering, voicemail, and WebSocket signaling details
|
refresh documentation for jitter buffering, voicemail, and WebSocket signaling details
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: 'siprouter',
|
name: 'siprouter',
|
||||||
version: '1.19.1',
|
version: '1.19.2',
|
||||||
description: 'undefined'
|
description: 'undefined'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: 'siprouter',
|
name: 'siprouter',
|
||||||
version: '1.19.1',
|
version: '1.19.2',
|
||||||
description: 'undefined'
|
description: 'undefined'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ const VIEW_TABS = [
|
|||||||
{ name: 'Phone', iconName: 'lucide:headset', element: SipproxyViewPhone },
|
{ name: 'Phone', iconName: 'lucide:headset', element: SipproxyViewPhone },
|
||||||
{ name: 'Routes', iconName: 'lucide:route', element: SipproxyViewRoutes },
|
{ name: 'Routes', iconName: 'lucide:route', element: SipproxyViewRoutes },
|
||||||
{ name: 'Voicemail', iconName: 'lucide:voicemail', element: SipproxyViewVoicemail },
|
{ name: 'Voicemail', iconName: 'lucide:voicemail', element: SipproxyViewVoicemail },
|
||||||
{ name: 'IVR', iconName: 'lucide:list-tree', element: SipproxyViewIvr },
|
{ name: 'IVR', iconName: 'lucide:ListTree', element: SipproxyViewIvr },
|
||||||
{ name: 'Contacts', iconName: 'lucide:contactRound', element: SipproxyViewContacts },
|
{ name: 'Contacts', iconName: 'lucide:contactRound', element: SipproxyViewContacts },
|
||||||
{ name: 'Providers', iconName: 'lucide:server', element: SipproxyViewProviders },
|
{ name: 'Providers', iconName: 'lucide:server', element: SipproxyViewProviders },
|
||||||
{ name: 'Log', iconName: 'lucide:scrollText', element: SipproxyViewLog },
|
{ name: 'Log', iconName: 'lucide:scrollText', element: SipproxyViewLog },
|
||||||
|
|||||||
@@ -422,7 +422,7 @@ export class SipproxyViewCalls extends DeesElement {
|
|||||||
menuOptions: [
|
menuOptions: [
|
||||||
{
|
{
|
||||||
name: 'Transfer',
|
name: 'Transfer',
|
||||||
iconName: 'lucide:arrow-right-left',
|
iconName: 'lucide:ArrowRightLeft',
|
||||||
action: async (modalRef: any) => {
|
action: async (modalRef: any) => {
|
||||||
if (!targetCallId || !targetLegId) {
|
if (!targetCallId || !targetLegId) {
|
||||||
deesCatalog.DeesToast.error('Please select both a target call and a leg');
|
deesCatalog.DeesToast.error('Please select both a target call and a leg');
|
||||||
@@ -620,7 +620,7 @@ export class SipproxyViewCalls extends DeesElement {
|
|||||||
title: 'Inbound',
|
title: 'Inbound',
|
||||||
value: inboundCount,
|
value: inboundCount,
|
||||||
type: 'number',
|
type: 'number',
|
||||||
icon: 'lucide:phone-incoming',
|
icon: 'lucide:PhoneIncoming',
|
||||||
description: 'Incoming calls',
|
description: 'Incoming calls',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -628,7 +628,7 @@ export class SipproxyViewCalls extends DeesElement {
|
|||||||
title: 'Outbound',
|
title: 'Outbound',
|
||||||
value: outboundCount,
|
value: outboundCount,
|
||||||
type: 'number',
|
type: 'number',
|
||||||
icon: 'lucide:phone-outgoing',
|
icon: 'lucide:PhoneOutgoing',
|
||||||
description: 'Outgoing calls',
|
description: 'Outgoing calls',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ export class SipproxyViewIvr extends DeesElement {
|
|||||||
title: 'Total Menus',
|
title: 'Total Menus',
|
||||||
value: ivr.menus.length,
|
value: ivr.menus.length,
|
||||||
type: 'number',
|
type: 'number',
|
||||||
icon: 'lucide:list-tree',
|
icon: 'lucide:ListTree',
|
||||||
description: 'IVR menu definitions',
|
description: 'IVR menu definitions',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -148,7 +148,7 @@ export class SipproxyViewIvr extends DeesElement {
|
|||||||
title: 'Entry Menu',
|
title: 'Entry Menu',
|
||||||
value: entryMenu?.name || '(none)',
|
value: entryMenu?.name || '(none)',
|
||||||
type: 'text' as any,
|
type: 'text' as any,
|
||||||
icon: 'lucide:door-open',
|
icon: 'lucide:DoorOpen',
|
||||||
description: entryMenu ? `ID: ${entryMenu.id}` : 'No entry menu set',
|
description: entryMenu ? `ID: ${entryMenu.id}` : 'No entry menu set',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -156,7 +156,7 @@ export class SipproxyViewIvr extends DeesElement {
|
|||||||
title: 'Status',
|
title: 'Status',
|
||||||
value: ivr.enabled ? 'Enabled' : 'Disabled',
|
value: ivr.enabled ? 'Enabled' : 'Disabled',
|
||||||
type: 'text' as any,
|
type: 'text' as any,
|
||||||
icon: ivr.enabled ? 'lucide:check-circle' : 'lucide:x-circle',
|
icon: ivr.enabled ? 'lucide:CheckCircle' : 'lucide:XCircle',
|
||||||
color: ivr.enabled ? 'hsl(142.1 76.2% 36.3%)' : 'hsl(0 84.2% 60.2%)',
|
color: ivr.enabled ? 'hsl(142.1 76.2% 36.3%)' : 'hsl(0 84.2% 60.2%)',
|
||||||
description: ivr.enabled ? 'IVR is active' : 'IVR is inactive',
|
description: ivr.enabled ? 'IVR is active' : 'IVR is inactive',
|
||||||
},
|
},
|
||||||
@@ -228,7 +228,7 @@ export class SipproxyViewIvr extends DeesElement {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Set as Entry',
|
name: 'Set as Entry',
|
||||||
iconName: 'lucide:door-open' as any,
|
iconName: 'lucide:DoorOpen' as any,
|
||||||
type: ['inRow'] as any,
|
type: ['inRow'] as any,
|
||||||
actionFunc: async ({ item }: { item: IIvrMenu }) => {
|
actionFunc: async ({ item }: { item: IIvrMenu }) => {
|
||||||
await this.setEntryMenu(item.id);
|
await this.setEntryMenu(item.id);
|
||||||
@@ -236,7 +236,7 @@ export class SipproxyViewIvr extends DeesElement {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Delete',
|
name: 'Delete',
|
||||||
iconName: 'lucide:trash-2' as any,
|
iconName: 'lucide:Trash2' as any,
|
||||||
type: ['inRow'] as any,
|
type: ['inRow'] as any,
|
||||||
actionFunc: async ({ item }: { item: IIvrMenu }) => {
|
actionFunc: async ({ item }: { item: IIvrMenu }) => {
|
||||||
await this.confirmDeleteMenu(item);
|
await this.confirmDeleteMenu(item);
|
||||||
@@ -295,7 +295,7 @@ export class SipproxyViewIvr extends DeesElement {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Delete',
|
name: 'Delete',
|
||||||
iconName: 'lucide:trash-2',
|
iconName: 'lucide:Trash2',
|
||||||
action: async (modalRef: any) => {
|
action: async (modalRef: any) => {
|
||||||
const ivr = this.getIvrConfig();
|
const ivr = this.getIvrConfig();
|
||||||
const menus = ivr.menus.filter((m) => m.id !== menu.id);
|
const menus = ivr.menus.filter((m) => m.id !== menu.id);
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ export class SipproxyViewOverview extends DeesElement {
|
|||||||
title: 'Inbound Calls',
|
title: 'Inbound Calls',
|
||||||
value: inboundCalls,
|
value: inboundCalls,
|
||||||
type: 'number',
|
type: 'number',
|
||||||
icon: 'lucide:phone-incoming',
|
icon: 'lucide:PhoneIncoming',
|
||||||
description: 'Currently active',
|
description: 'Currently active',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -115,7 +115,7 @@ export class SipproxyViewOverview extends DeesElement {
|
|||||||
title: 'Outbound Calls',
|
title: 'Outbound Calls',
|
||||||
value: outboundCalls,
|
value: outboundCalls,
|
||||||
type: 'number',
|
type: 'number',
|
||||||
icon: 'lucide:phone-outgoing',
|
icon: 'lucide:PhoneOutgoing',
|
||||||
description: 'Currently active',
|
description: 'Currently active',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ export class SipproxyViewProviders extends DeesElement {
|
|||||||
title: 'Registered',
|
title: 'Registered',
|
||||||
value: registered,
|
value: registered,
|
||||||
type: 'number',
|
type: 'number',
|
||||||
icon: 'lucide:check-circle',
|
icon: 'lucide:CheckCircle',
|
||||||
color: 'hsl(142.1 76.2% 36.3%)',
|
color: 'hsl(142.1 76.2% 36.3%)',
|
||||||
description: 'Active registrations',
|
description: 'Active registrations',
|
||||||
},
|
},
|
||||||
@@ -95,7 +95,7 @@ export class SipproxyViewProviders extends DeesElement {
|
|||||||
title: 'Unregistered',
|
title: 'Unregistered',
|
||||||
value: unregistered,
|
value: unregistered,
|
||||||
type: 'number',
|
type: 'number',
|
||||||
icon: 'lucide:alert-circle',
|
icon: 'lucide:AlertCircle',
|
||||||
color: unregistered > 0 ? 'hsl(0 84.2% 60.2%)' : undefined,
|
color: unregistered > 0 ? 'hsl(0 84.2% 60.2%)' : undefined,
|
||||||
description: unregistered > 0 ? 'Needs attention' : 'All healthy',
|
description: unregistered > 0 ? 'Needs attention' : 'All healthy',
|
||||||
},
|
},
|
||||||
@@ -153,7 +153,7 @@ export class SipproxyViewProviders extends DeesElement {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Delete',
|
name: 'Delete',
|
||||||
iconName: 'lucide:trash-2',
|
iconName: 'lucide:Trash2',
|
||||||
type: ['inRow'] as any,
|
type: ['inRow'] as any,
|
||||||
actionFunc: async (actionData: any) => {
|
actionFunc: async (actionData: any) => {
|
||||||
await this.confirmDelete(actionData.item);
|
await this.confirmDelete(actionData.item);
|
||||||
@@ -579,7 +579,7 @@ export class SipproxyViewProviders extends DeesElement {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Delete',
|
name: 'Delete',
|
||||||
iconName: 'lucide:trash-2',
|
iconName: 'lucide:Trash2',
|
||||||
action: async (modalRef: any) => {
|
action: async (modalRef: any) => {
|
||||||
try {
|
try {
|
||||||
const result = await appState.apiSaveConfig({
|
const result = await appState.apiSaveConfig({
|
||||||
|
|||||||
@@ -239,7 +239,7 @@ export class SipproxyViewVoicemail extends DeesElement {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Delete',
|
name: 'Delete',
|
||||||
iconName: 'lucide:trash-2',
|
iconName: 'lucide:Trash2',
|
||||||
action: async (modalRef: any) => {
|
action: async (modalRef: any) => {
|
||||||
try {
|
try {
|
||||||
await fetch(
|
await fetch(
|
||||||
@@ -281,7 +281,7 @@ export class SipproxyViewVoicemail extends DeesElement {
|
|||||||
title: 'Unheard Messages',
|
title: 'Unheard Messages',
|
||||||
value: unheard,
|
value: unheard,
|
||||||
type: 'number',
|
type: 'number',
|
||||||
icon: 'lucide:bell-ring',
|
icon: 'lucide:BellRing',
|
||||||
color: unheard > 0 ? 'hsl(0 84.2% 60.2%)' : 'hsl(142.1 76.2% 36.3%)',
|
color: unheard > 0 ? 'hsl(0 84.2% 60.2%)' : 'hsl(142.1 76.2% 36.3%)',
|
||||||
description: unheard > 0 ? 'Needs attention' : 'All caught up',
|
description: unheard > 0 ? 'Needs attention' : 'All caught up',
|
||||||
},
|
},
|
||||||
@@ -372,7 +372,7 @@ export class SipproxyViewVoicemail extends DeesElement {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Delete',
|
name: 'Delete',
|
||||||
iconName: 'lucide:trash-2',
|
iconName: 'lucide:Trash2',
|
||||||
type: ['inRow'] as any,
|
type: ['inRow'] as any,
|
||||||
actionFunc: async (actionData: any) => {
|
actionFunc: async (actionData: any) => {
|
||||||
await this.deleteMessage(actionData.item as IVoicemailMessage);
|
await this.deleteMessage(actionData.item as IVoicemailMessage);
|
||||||
|
|||||||
Reference in New Issue
Block a user