feat: Use Fluent SVG icons on the dashboard (#3482)

This commit is contained in:
Pranav Raj S 2021-11-30 21:03:18 -08:00 committed by GitHub
parent 98be3b33c1
commit c792cfc0be
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
151 changed files with 613 additions and 617 deletions

View file

@ -6,6 +6,10 @@
margin-right: var(--space-smaller); margin-right: var(--space-smaller);
} }
.margin-left-minus-slab {
margin-left: var(--space-minus-slab);
}
.fs-small { .fs-small {
font-size: var(--font-size-small); font-size: var(--font-size-small);
} }

View file

@ -85,11 +85,6 @@
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
width: 27rem; width: 27rem;
.small-icon {
font-size: $font-size-mini;
vertical-align: top;
}
} }
.conversation--meta { .conversation--meta {

View file

@ -19,7 +19,7 @@
cursor: pointer; cursor: pointer;
font-size: $font-size-big; font-size: $font-size-big;
line-height: $space-normal; line-height: $space-normal;
padding: $space-normal $space-two; padding: $space-normal;
position: absolute; position: absolute;
right: $space-micro; right: $space-micro;
top: $space-micro; top: $space-micro;

View file

@ -31,6 +31,8 @@
.wrap, .wrap,
.child-icon { .child-icon {
color: $color-gray;
&:hover { &:hover {
color: $color-woot; color: $color-woot;
} }
@ -62,7 +64,7 @@
.bottom-nav { .bottom-nav {
@include flex; @include flex;
@include space-between-column; @include space-between-column;
@include padding($space-one $space-normal $space-one $space-one); @include padding($space-one);
@include border-normal-top; @include border-normal-top;
flex-direction: column; flex-direction: column;
position: relative; position: relative;
@ -111,16 +113,6 @@
line-height: $global-lineheight; line-height: $global-lineheight;
} }
.hamburger--menu {
cursor: pointer;
display: none;
margin-right: $space-normal;
@media screen and (max-width: 1200px) {
display: block;
}
}
.header--icon { .header--icon {
display: block; display: block;
margin-right: $space-normal; margin-right: $space-normal;

View file

@ -10,8 +10,8 @@
<div class="button-icon--wrap"> <div class="button-icon--wrap">
<slot name="button" /> <slot name="button" />
<div class="chevron-icon__wrap"> <div class="chevron-icon__wrap">
<i v-if="isOpen" class="ion-minus chevron-icon"></i> <fluent-icon v-if="isOpen" size="24" icon="subtract" type="solid" />
<i v-else class="ion-plus chevron-icon"></i> <fluent-icon v-else size="24" icon="add" type="solid" />
</div> </div>
</div> </div>
</button> </button>

View file

@ -27,7 +27,7 @@ l<template>
class="btn-filter" class="btn-filter"
@click="onToggleAdvanceFiltersModal" @click="onToggleAdvanceFiltersModal"
> >
<i class="icon ion-ios-settings-strong" /> <fluent-icon icon="filter" />
</woot-button> </woot-button>
</div> </div>
</div> </div>

View file

@ -23,7 +23,7 @@
variant="link" variant="link"
size="medium" size="medium"
color-scheme="secondary" color-scheme="secondary"
icon="ion-trash-a" icon="delete"
class-names="delete-button" class-names="delete-button"
@click="onDelete" @click="onDelete"
/> />
@ -44,7 +44,7 @@
@keyup.enter="onUpdate" @keyup.enter="onUpdate"
/> />
<div class="input-group-button"> <div class="input-group-button">
<woot-button size="small" icon="ion-checkmark" @click="onUpdate" /> <woot-button size="small" icon="checkmark" @click="onUpdate" />
</div> </div>
</div> </div>
<span v-if="shouldShowErrorMessage" class="error-message"> <span v-if="shouldShowErrorMessage" class="error-message">
@ -75,7 +75,7 @@
variant="link" variant="link"
size="small" size="small"
color-scheme="secondary" color-scheme="secondary"
icon="ion-clipboard" icon="clipboard"
class-names="edit-button" class-names="edit-button"
@click="onCopy" @click="onCopy"
/> />
@ -85,7 +85,7 @@
variant="link" variant="link"
size="small" size="small"
color-scheme="secondary" color-scheme="secondary"
icon="ion-compose" icon="edit"
class-names="edit-button" class-names="edit-button"
@click="onEdit" @click="onEdit"
/> />

View file

@ -7,7 +7,9 @@
@click="onBackDropClick" @click="onBackDropClick"
> >
<div :class="modalContainerClassName" @click.stop> <div :class="modalContainerClassName" @click.stop>
<i class="ion-android-close modal--close" @click="close"></i> <button class="modal--close" @click="close">
<fluent-icon icon="dismiss" />
</button>
<slot /> <slot />
</div> </div>
</div> </div>

View file

@ -23,7 +23,7 @@
{{ $t('NETWORK.BUTTON.REFRESH') }} {{ $t('NETWORK.BUTTON.REFRESH') }}
</button> </button>
<button class="ui-close-button" @click="closeNotification"> <button class="ui-close-button" @click="closeNotification">
<i class="ui-close-icon icon ion-ios-close-outline" /> <fluent-icon icon="dismiss-circle" class="ui-close-icon " />
</button> </button>
</div> </div>
</div> </div>

View file

@ -1,5 +1,7 @@
<template> <template>
<i class="ion-android-menu hamburger--menu" @click="onMenuItemClick" /> <button @click="onMenuItemClick">
<fluent-icon class="hamburger--menu" icon="list" />
</button>
</template> </template>
<script> <script>
@ -13,8 +15,14 @@ export default {
}, },
}; };
</script> </script>
<style lang="scss" scoped> <style scoped lang="scss">
.ion-android-menu { .hamburger--menu {
font-size: var(--font-size-big); cursor: pointer;
display: none;
margin-right: var(--space-normal);
@media screen and (max-width: 1200px) {
display: block;
}
} }
</style> </style>

View file

@ -1,9 +1,10 @@
<template> <template>
<button :type="type" class="button nice" :class="variant" @click="onClick"> <button :type="type" class="button nice" :class="variant" @click="onClick">
<i <fluent-icon
v-if="!isLoading && icon" v-if="!isLoading && icon"
class="icon" class="icon"
:class="buttonIconClass + ' ' + icon" :class="buttonIconClass"
:icon="icon"
/> />
<spinner v-if="isLoading" /> <spinner v-if="isLoading" />
<slot></slot> <slot></slot>

View file

@ -6,7 +6,7 @@
:class="computedClass" :class="computedClass"
@click="onClick" @click="onClick"
> >
<i v-if="!!iconClass" :class="iconClass" class="icon" /> <fluent-icon v-if="!!iconClass" :icon="iconClass" class="icon" />
<span>{{ buttonText }}</span> <span>{{ buttonText }}</span>
<spinner v-if="loading" /> <spinner v-if="loading" />
</button> </button>

View file

@ -5,8 +5,9 @@
v-if="isOpen" v-if="isOpen"
class-names="resolve" class-names="resolve"
color-scheme="success" color-scheme="success"
icon="ion-checkmark" icon="checkmark"
emoji="✅" emoji="✅"
icon-size="16"
:is-loading="isLoading" :is-loading="isLoading"
@click="onCmdResolveConversation" @click="onCmdResolveConversation"
> >
@ -16,8 +17,9 @@
v-else-if="isResolved" v-else-if="isResolved"
class-names="resolve" class-names="resolve"
color-scheme="warning" color-scheme="warning"
icon="ion-refresh" icon="arrow-redo"
emoji="👀" emoji="👀"
icon-size="16"
:is-loading="isLoading" :is-loading="isLoading"
@click="onCmdOpenConversation" @click="onCmdOpenConversation"
> >
@ -27,7 +29,8 @@
v-else-if="showOpenButton" v-else-if="showOpenButton"
class-names="resolve" class-names="resolve"
color-scheme="primary" color-scheme="primary"
icon="ion-person" icon="person"
icon-size="16"
:is-loading="isLoading" :is-loading="isLoading"
@click="onCmdOpenConversation" @click="onCmdOpenConversation"
> >
@ -38,7 +41,8 @@
ref="arrowDownButton" ref="arrowDownButton"
:color-scheme="buttonClass" :color-scheme="buttonClass"
:disabled="isLoading" :disabled="isLoading"
icon="ion-arrow-down-b" icon="chevron-down"
icon-size="16"
emoji="🔽" emoji="🔽"
@click="openDropdown" @click="openDropdown"
/> />

View file

@ -45,7 +45,7 @@
<div class="bottom-nav app-context-menu" @click="toggleOptions"> <div class="bottom-nav app-context-menu" @click="toggleOptions">
<agent-details @show-options="toggleOptions" /> <agent-details @show-options="toggleOptions" />
<notification-bell /> <notification-bell />
<span class="current-user--options icon ion-android-more-vertical" /> <fluent-icon class="current-user--options" icon="more-vertical" />
<options-menu <options-menu
:show="showOptionsMenu" :show="showOptionsMenu"
@toggle-accounts="toggleAccountModal" @toggle-accounts="toggleAccountModal"
@ -107,14 +107,14 @@ import router from '../../routes';
export default { export default {
components: { components: {
AgentDetails,
SidebarItem,
AvailabilityStatus,
NotificationBell,
OptionsMenu,
AccountSelector, AccountSelector,
AddAccountModal, AddAccountModal,
AddLabelModal, AddLabelModal,
AgentDetails,
AvailabilityStatus,
NotificationBell,
OptionsMenu,
SidebarItem,
WootKeyShortcutModal, WootKeyShortcutModal,
}, },
mixins: [adminMixin, alertMixin, eventListenerMixins], mixins: [adminMixin, alertMixin, eventListenerMixins],
@ -173,7 +173,7 @@ export default {
}, },
inboxSection() { inboxSection() {
return { return {
icon: 'ion-folder', icon: 'folder',
label: 'INBOXES', label: 'INBOXES',
hasSubMenu: true, hasSubMenu: true,
newLink: true, newLink: true,
@ -193,7 +193,7 @@ export default {
}, },
labelSection() { labelSection() {
return { return {
icon: 'ion-pound', icon: 'number-symbol',
label: 'LABELS', label: 'LABELS',
hasSubMenu: true, hasSubMenu: true,
newLink: true, newLink: true,
@ -216,7 +216,7 @@ export default {
}, },
contactLabelSection() { contactLabelSection() {
return { return {
icon: 'ion-pound', icon: 'number-symbol',
label: 'TAGGED_WITH', label: 'TAGGED_WITH',
hasSubMenu: true, hasSubMenu: true,
key: 'label', key: 'label',
@ -239,7 +239,7 @@ export default {
}, },
teamSection() { teamSection() {
return { return {
icon: 'ion-ios-people', icon: 'people-team',
label: 'TEAMS', label: 'TEAMS',
hasSubMenu: true, hasSubMenu: true,
newLink: true, newLink: true,
@ -354,11 +354,11 @@ export default {
cursor: pointer; cursor: pointer;
padding: $space-small $space-large; padding: $space-small $space-large;
.ion-ios-checkmark { .selected--account {
font-size: $font-size-big; margin-top: -$space-smaller;
& + .account--details { & + .account--details {
padding-left: $space-normal; padding-left: $space-normal - $space-micro;
} }
} }

View file

@ -13,14 +13,20 @@
:title="menuItem.toolTip" :title="menuItem.toolTip"
> >
<div class="wrap"> <div class="wrap">
<i :class="menuItem.icon" /> <fluent-icon
size="18"
:icon="menuItem.icon"
class="margin-right-small"
/>
{{ $t(`SIDEBAR.${menuItem.label}`) }} {{ $t(`SIDEBAR.${menuItem.label}`) }}
</div> </div>
<span <button
v-if="showItem(menuItem)" v-if="showItem(menuItem)"
class="child-icon ion-android-add-circle" class="child-icon"
@click.prevent="newLinkClick(menuItem)" @click.prevent="newLinkClick(menuItem)"
/> >
<fluent-icon icon="add-circle" size="16" />
</button>
</a> </a>
<ul v-if="menuItem.hasSubMenu" class="nested vertical menu"> <ul v-if="menuItem.hasSubMenu" class="nested vertical menu">
<router-link <router-link
@ -32,10 +38,11 @@
> >
<a href="#" :class="computedChildClass(child)"> <a href="#" :class="computedChildClass(child)">
<div class="wrap"> <div class="wrap">
<i <fluent-icon
v-if="menuItem.key === 'inbox'" v-if="menuItem.key === 'inbox'"
class="inbox-icon" class="inbox-icon"
:class="computedInboxClass(child)" size="14"
:icon="computedInboxClass(child)"
/> />
<span <span
v-if="child.color" v-if="child.color"
@ -143,12 +150,4 @@ export default {
min-width: $space-normal; min-width: $space-normal;
width: $space-normal; width: $space-normal;
} }
.inbox-icon {
position: relative;
top: -1px;
&.ion-ios-email {
font-size: var(--font-size-medium);
}
}
</style> </style>

View file

@ -14,7 +14,13 @@
class="account-selector" class="account-selector"
> >
<a :href="`/app/accounts/${account.id}/dashboard`"> <a :href="`/app/accounts/${account.id}/dashboard`">
<i v-if="account.id === accountId" class="ion ion-ios-checkmark" /> <fluent-icon
v-if="account.id === accountId"
class="selected--account"
icon="checkmark-circle"
type="solid"
size="24"
/>
<label :for="account.name" class="account--details"> <label :for="account.name" class="account--details">
<div class="account--name">{{ account.name }}</div> <div class="account--name">{{ account.name }}</div>
<div class="account--role">{{ account.role }}</div> <div class="account--role">{{ account.role }}</div>

View file

@ -12,7 +12,7 @@
<div v-if="!hasAccounts" class="alert-wrap"> <div v-if="!hasAccounts" class="alert-wrap">
<div class="callout alert"> <div class="callout alert">
<div class="icon-wrap"> <div class="icon-wrap">
<i class="ion-alert-circled"></i> <fluent-icon icon="warning" />
</div> </div>
{{ $t('CREATE_ACCOUNT.NO_ACCOUNT_WARNING') }} {{ $t('CREATE_ACCOUNT.NO_ACCOUNT_WARNING') }}
</div> </div>
@ -102,18 +102,19 @@ export default {
}, },
}; };
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.alert-wrap { .alert-wrap {
margin: var(--space-zero) var(--space-large); font-size: var(--font-size-small);
margin-top: var(--space-medium); margin: var(--space-medium) var(--space-large) var(--space-zero);
.callout { .callout {
align-items: center;
border-radius: var(--border-radius-normal);
display: flex; display: flex;
justify-content: center;
} }
} }
.icon-wrap { .icon-wrap {
font-size: var(--font-size-big);
margin-left: var(--space-smaller); margin-left: var(--space-smaller);
margin-right: var(--space-slab); margin-right: var(--space-slab);
} }

View file

@ -1,10 +1,12 @@
<template> <template>
<span class="notifications icon ion-ios-bell" @click.stop="showNotification"> <span class="notifications" @click.stop="showNotification">
<fluent-icon icon="alert" />
<span v-if="unreadCount" class="unread-badge">{{ unreadCount }}</span> <span v-if="unreadCount" class="unread-badge">{{ unreadCount }}</span>
</span> </span>
</template> </template>
<script> <script>
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
export default { export default {
computed: { computed: {
...mapGetters({ ...mapGetters({

View file

@ -7,10 +7,12 @@ import i18n from 'dashboard/i18n';
import WootModal from 'dashboard/components/Modal'; import WootModal from 'dashboard/components/Modal';
import WootModalHeader from 'dashboard/components/ModalHeader'; import WootModalHeader from 'dashboard/components/ModalHeader';
import FluentIcon from 'shared/components/FluentIcon/DashboardIcon';
const localVue = createLocalVue(); const localVue = createLocalVue();
localVue.component('woot-modal', WootModal); localVue.component('woot-modal', WootModal);
localVue.component('woot-modal-header', WootModalHeader); localVue.component('woot-modal-header', WootModalHeader);
localVue.component('fluent-icon', FluentIcon);
localVue.use(Vuex); localVue.use(Vuex);
localVue.use(VueI18n); localVue.use(VueI18n);
@ -84,7 +86,7 @@ describe('accountSelctor', () => {
}); });
it('first account item is checked', () => { it('first account item is checked', () => {
const accountFirstItem = accountSelector.find('.account-selector .ion'); const accountFirstItem = accountSelector.find('.account-selector svg');
expect(accountFirstItem.exists()).toBe(true); expect(accountFirstItem.exists()).toBe(true);
}); });
}); });

View file

@ -1,7 +1,10 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`SidemenuIcon matches snapshot 1`] = ` exports[`SidemenuIcon matches snapshot 1`] = `
<i <button>
class="ion-android-menu hamburger--menu" <fluent-icon
class="hamburger--menu"
icon="list"
/> />
</button>
`; `;

View file

@ -1,13 +1,23 @@
<template> <template>
<div :class="labelClass" :style="labelStyle" :title="description"> <div :class="labelClass" :style="labelStyle" :title="description">
<i v-if="icon" class="label--icon" :class="icon" @click="onClick" /> <button v-if="icon" class="label-action--button" @click="onClick">
<fluent-icon :icon="icon" size="12" class="label--icon" />
</button>
<span v-if="!href">{{ title }}</span> <span v-if="!href">{{ title }}</span>
<a v-else :href="href" :style="anchorStyle">{{ title }}</a> <a v-else :href="href" :style="anchorStyle">{{ title }}</a>
<i v-if="showClose" class="close--icon ion-close" @click="onClick" /> <button
v-if="showClose"
class="label-action--button"
:style="{ color: textColor }"
@click="onClick"
>
<fluent-icon icon="dismiss" size="12" class="close--icon" />
</button>
</div> </div>
</template> </template>
<script> <script>
import { getContrastingTextColor } from '@chatwoot/utils'; import { getContrastingTextColor } from '@chatwoot/utils';
export default { export default {
props: { props: {
title: { title: {
@ -79,6 +89,8 @@ export default {
@import '~dashboard/assets/scss/variables'; @import '~dashboard/assets/scss/variables';
.label { .label {
display: inline-flex;
align-items: center;
font-weight: var(--font-weight-medium); font-weight: var(--font-weight-medium);
margin-right: var(--space-smaller); margin-right: var(--space-smaller);
margin-bottom: var(--space-smaller); margin-bottom: var(--space-smaller);
@ -89,11 +101,12 @@ export default {
.label--icon { .label--icon {
cursor: pointer; cursor: pointer;
margin-right: var(--space-smaller);
} }
.label--icon,
.close--icon { .close--icon {
font-size: var(--font-size-micro);
cursor: pointer; cursor: pointer;
margin-left: var(--space-smaller);
} }
&.small .label--icon, &.small .label--icon,
@ -150,4 +163,8 @@ export default {
} }
} }
} }
.label-action--button {
margin-bottom: var(--space-minus-micro);
}
</style> </style>

View file

@ -14,7 +14,7 @@
<h3> <h3>
{{ item.title }} {{ item.title }}
<span v-if="isOver(item)" class="completed"> <span v-if="isOver(item)" class="completed">
<i class="ion-checkmark"></i> <fluent-icon icon="checkmark" />
</span> </span>
</h3> </h3>
<span class="step"> <span class="step">

View file

@ -11,6 +11,7 @@
class="icon" class="icon"
:emoji="emoji" :emoji="emoji"
:icon="icon" :icon="icon"
:icon-size="iconSize"
/> />
<span v-if="$slots.default" class="button__content"><slot></slot></span> <span v-if="$slots.default" class="button__content"><slot></slot></span>
</button> </button>
@ -35,6 +36,10 @@ export default {
type: String, type: String,
default: '', default: '',
}, },
iconSize: {
type: [Number, String],
default: 20,
},
emoji: { emoji: {
type: String, type: String,
default: '', default: '',

View file

@ -24,12 +24,11 @@
</span> </span>
</div> </div>
<div class="remove-file-wrap"> <div class="remove-file-wrap">
<button <woot-button
class="remove--attachment" class="remove--attachment clear secondary"
icon="dismiss"
@click="() => onRemoveAttachment(index)" @click="() => onRemoveAttachment(index)"
> />
<i class="ion-android-close"></i>
</button>
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,7 +1,8 @@
<template> <template>
<span class="back-button ion-ios-arrow-left" @click.capture="goBack"> <button class="back-button" @click.capture="goBack">
<fluent-icon icon="chevron-left" />
{{ buttonLabel || $t('GENERAL_SETTINGS.BACK') }} {{ buttonLabel || $t('GENERAL_SETTINGS.BACK') }}
</span> </button>
</template> </template>
<script> <script>
import router from '../../routes/index'; import router from '../../routes/index';
@ -28,3 +29,4 @@ export default {
}, },
}; };
</script> </script>
<style scoped></style>

View file

@ -1,38 +0,0 @@
<template>
<div class="inbox">
<i :class="icon" />
<span>{{ inbox.name }}</span>
</div>
</template>
<script>
import { INBOX_TYPES } from 'shared/mixins/inboxMixin';
export default {
props: {
inbox: {
type: Object,
default: () => {},
},
},
computed: {
icon() {
if (this.inbox.channel_type === INBOX_TYPES.WEB) {
return 'icon ion-earth';
}
return 'icon ion-android-textsms';
},
},
};
</script>
<style scoped lang="scss">
.inbox {
display: flex;
align-items: center;
.icon {
margin-right: var(--space-micro);
min-width: var(--space-normal);
position: relative;
top: -1px;
}
}
</style>

View file

@ -1,23 +0,0 @@
<template>
<div class="inbox-item">
<img src="~dashboard/assets/images/no_page_image.png" alt="No Page Image" />
<div class="item--details columns">
<h4 class="item--name">
{{ inbox.label }}
</h4>
<p class="item--sub">
Facebook
</p>
</div>
<!-- <span class="ion-chevron-right arrow"></span> -->
</div>
</template>
<script>
/* eslint no-console: 0 */
// import WootSwitch from '../ui/Switch';
export default {
props: ['inbox'],
created() {},
};
</script>

View file

@ -1,8 +1,8 @@
<template> <template>
<span class="inbox--name"> <div class="inbox--name">
<i :class="computedInboxClass" /> <fluent-icon class="inbox--icon" :icon="computedInboxClass" size="12" />
{{ inbox.name }} {{ inbox.name }}
</span> </div>
</template> </template>
<script> <script>
import { getInboxClassByType } from 'dashboard/helper/inbox'; import { getInboxClassByType } from 'dashboard/helper/inbox';
@ -25,6 +25,7 @@ export default {
</script> </script>
<style scoped> <style scoped>
.inbox--name { .inbox--name {
display: inline-flex;
padding: var(--space-micro) 0; padding: var(--space-micro) 0;
line-height: var(--space-slab); line-height: var(--space-slab);
font-weight: var(--font-weight-medium); font-weight: var(--font-weight-medium);
@ -32,4 +33,8 @@ export default {
color: var(--s-500); color: var(--s-500);
font-size: var(--font-size-mini); font-size: var(--font-size-mini);
} }
.inbox--icon {
margin-right: var(--space-micro);
}
</style> </style>

View file

@ -1,11 +0,0 @@
<template>
<div class="search">
<i class="icon ion-ios-search-strong" />
<input class="input" type="email" :placeholder="$t('CHAT_LIST.SEARCH.INPUT')">
</div>
</template>
<script>
export default {
};
</script>

View file

@ -20,8 +20,12 @@
:is-disabled="hasFirstPage" :is-disabled="hasFirstPage"
@click="onFirstPage" @click="onFirstPage"
> >
<i class="ion-chevron-left" /> <fluent-icon icon="chevron-left" size="18" />
<i class="ion-chevron-left" /> <fluent-icon
icon="chevron-left"
size="18"
class="margin-left-minus-slab"
/>
</woot-button> </woot-button>
<woot-button <woot-button
size="small" size="small"
@ -30,7 +34,7 @@
:is-disabled="hasPrevPage" :is-disabled="hasPrevPage"
@click="onPrevPage" @click="onPrevPage"
> >
<i class="ion-chevron-left" /> <fluent-icon icon="chevron-left" size="18" />
</woot-button> </woot-button>
<woot-button <woot-button
size="small" size="small"
@ -47,7 +51,7 @@
:is-disabled="hasNextPage" :is-disabled="hasNextPage"
@click="onNextPage" @click="onNextPage"
> >
<i class="ion-chevron-right" /> <fluent-icon icon="chevron-right" size="18" />
</woot-button> </woot-button>
<woot-button <woot-button
size="small" size="small"
@ -57,8 +61,12 @@
:is-disabled="hasLastPage" :is-disabled="hasLastPage"
@click="onLastPage" @click="onLastPage"
> >
<i class="ion-chevron-right" /> <fluent-icon icon="chevron-right" size="18" />
<i class="ion-chevron-right" /> <fluent-icon
icon="chevron-right"
size="18"
class="margin-left-minus-slab"
/>
</woot-button> </woot-button>
</div> </div>
</div> </div>

View file

@ -3,11 +3,12 @@
<div class="left-wrap"> <div class="left-wrap">
<woot-button <woot-button
:title="$t('CONVERSATION.REPLYBOX.TIP_EMOJI_ICON')" :title="$t('CONVERSATION.REPLYBOX.TIP_EMOJI_ICON')"
icon="ion-happy-outline" icon="emoji"
emoji="😊" emoji="😊"
color-scheme="secondary" color-scheme="secondary"
variant="smooth" variant="smooth"
size="small" size="small"
:icon-size="14"
@click="toggleEmojiPicker" @click="toggleEmojiPicker"
/> />
@ -24,8 +25,9 @@
v-if="showAttachButton" v-if="showAttachButton"
class-names="button--upload" class-names="button--upload"
:title="$t('CONVERSATION.REPLYBOX.TIP_ATTACH_ICON')" :title="$t('CONVERSATION.REPLYBOX.TIP_ATTACH_ICON')"
icon="ion-android-attach" icon="attach"
emoji="📎" emoji="📎"
:icon-size="14"
color-scheme="secondary" color-scheme="secondary"
variant="smooth" variant="smooth"
size="small" size="small"
@ -33,8 +35,9 @@
</file-upload> </file-upload>
<woot-button <woot-button
v-if="enableRichEditor && !isOnPrivateNote" v-if="enableRichEditor && !isOnPrivateNote"
icon="ion-quote" icon="quote"
emoji="🖊️" emoji="🖊️"
:icon-size="16"
color-scheme="secondary" color-scheme="secondary"
variant="smooth" variant="smooth"
size="small" size="small"
@ -46,7 +49,7 @@
v-show="$refs.upload && $refs.upload.dropActive" v-show="$refs.upload && $refs.upload.dropActive"
class="modal-mask" class="modal-mask"
> >
<i class="ion-ios-cloud-upload-outline icon"></i> <fluent-icon icon="cloud-backup" />
<h4 class="page-sub-title"> <h4 class="page-sub-title">
{{ $t('CONVERSATION.REPLYBOX.DRAG_DROP') }} {{ $t('CONVERSATION.REPLYBOX.DRAG_DROP') }}
</h4> </h4>

View file

@ -30,7 +30,7 @@
v-if="popoutReplyBox" v-if="popoutReplyBox"
variant="clear" variant="clear"
size="large" size="large"
icon="ion-android-close" icon="dismiss"
color-scheme="secondary" color-scheme="secondary"
class-names="popout-button" class-names="popout-button"
@click="$emit('click')" @click="$emit('click')"
@ -39,7 +39,7 @@
v-else v-else
variant="clear" variant="clear"
size="large" size="large"
icon="ion-arrow-resize" icon="resize-large"
color-scheme="secondary" color-scheme="secondary"
class-names="popout-button" class-names="popout-button"
@click="$emit('click')" @click="$emit('click')"

View file

@ -21,7 +21,8 @@
/> />
<div class="filter-actions"> <div class="filter-actions">
<woot-button <woot-button
icon="ion-plus" icon="add"
icon-size="16"
color-scheme="success" color-scheme="success"
variant="smooth" variant="smooth"
size="small" size="small"

View file

@ -24,7 +24,7 @@
v-if="showAssignee && assignee.name" v-if="showAssignee && assignee.name"
class="label assignee-label text-truncate" class="label assignee-label text-truncate"
> >
<i class="ion-person" /> <fluent-icon icon="person" size="12" />
{{ assignee.name }} {{ assignee.name }}
</span> </span>
</div> </div>
@ -32,25 +32,41 @@
{{ currentContact.name }} {{ currentContact.name }}
</h4> </h4>
<p v-if="lastMessageInChat" class="conversation--message"> <p v-if="lastMessageInChat" class="conversation--message">
<i v-if="isMessagePrivate" class="ion-locked last-message-icon" /> <fluent-icon
<i v-else-if="messageByAgent" class="ion-ios-undo last-message-icon" /> v-if="isMessagePrivate"
<i size="16"
class="message--attachment-icon last-message-icon"
icon="lock-closed"
/>
<fluent-icon
v-else-if="messageByAgent"
size="16"
class="message--attachment-icon last-message-icon"
icon="arrow-reply"
/>
<fluent-icon
v-else-if="isMessageAnActivity" v-else-if="isMessageAnActivity"
class="ion-information-circled last-message-icon" size="16"
class="message--attachment-icon last-message-icon"
icon="info"
/> />
<span v-if="lastMessageInChat.content"> <span v-if="lastMessageInChat.content">
{{ parsedLastMessage }} {{ parsedLastMessage }}
</span> </span>
<span v-else-if="lastMessageInChat.attachments"> <span v-else-if="lastMessageInChat.attachments">
<i :class="`small-icon ${this.$t(`${attachmentIconKey}.ICON`)}`"></i> <fluent-icon
{{ this.$t(`${attachmentIconKey}.CONTENT`) }} size="16"
class="message--attachment-icon"
:icon="attachmentIcon"
/>
{{ this.$t(`${attachmentMessageContent}`) }}
</span> </span>
<span v-else> <span v-else>
{{ $t('CHAT_LIST.NO_CONTENT') }} {{ $t('CHAT_LIST.NO_CONTENT') }}
</span> </span>
</p> </p>
<p v-else class="conversation--message"> <p v-else class="conversation--message">
<i class="ion-android-alert"></i> <fluent-icon size="16" class="message--attachment-icon" icon="info" />
<span> <span>
{{ this.$t(`CHAT_LIST.NO_MESSAGES`) }} {{ this.$t(`CHAT_LIST.NO_MESSAGES`) }}
</span> </span>
@ -76,6 +92,15 @@ import { frontendURL, conversationUrl } from '../../../helper/URLHelper';
import InboxName from '../InboxName'; import InboxName from '../InboxName';
import inboxMixin from 'shared/mixins/inboxMixin'; import inboxMixin from 'shared/mixins/inboxMixin';
const ATTACHMENT_ICONS = {
image: 'image',
audio: 'headphones-sound-wave',
video: 'video',
file: 'document',
location: 'location',
fallback: 'link',
};
export default { export default {
components: { components: {
InboxName, InboxName,
@ -133,10 +158,18 @@ export default {
); );
}, },
attachmentIconKey() { lastMessageFileType() {
const lastMessage = this.lastMessageInChat; const lastMessage = this.lastMessageInChat;
const [{ file_type: fileType } = {}] = lastMessage.attachments; const [{ file_type: fileType } = {}] = lastMessage.attachments;
return `CHAT_LIST.ATTACHMENTS.${fileType}`; return fileType;
},
attachmentIcon() {
return ATTACHMENT_ICONS[this.lastMessageFileType];
},
attachmentMessageContent() {
return `CHAT_LIST.ATTACHMENTS.${this.lastMessageFileType}.CONTENT`;
}, },
isActiveChat() { isActiveChat() {
@ -243,14 +276,10 @@ export default {
white-space: nowrap; white-space: nowrap;
width: 60%; width: 60%;
} }
.ion-earth {
font-size: var(--font-size-mini);
}
} }
.last-message-icon { .last-message-icon {
color: var(--s-600); color: var(--s-600);
font-size: var(--font-size-mini);
} }
.conversation--metadata { .conversation--metadata {
@ -259,16 +288,22 @@ export default {
padding-right: var(--space-normal); padding-right: var(--space-normal);
.label { .label {
padding: var(--space-micro) 0 var(--space-micro) 0;
line-height: var(--space-slab);
font-weight: var(--font-weight-medium);
background: none; background: none;
color: var(--s-500); color: var(--s-500);
font-size: var(--font-size-mini); font-size: var(--font-size-mini);
font-weight: var(--font-weight-medium);
line-height: var(--space-slab);
padding: var(--space-micro) 0 var(--space-micro) 0;
} }
.assignee-label { .assignee-label {
display: inline-flex;
max-width: 50%; max-width: 50%;
} }
} }
.message--attachment-icon {
margin-top: var(--space-minus-micro);
vertical-align: middle;
}
</style> </style>

View file

@ -11,10 +11,12 @@
<div class="user--profile__meta"> <div class="user--profile__meta">
<h3 class="user--name text-truncate"> <h3 class="user--name text-truncate">
<span class="margin-right-smaller">{{ currentContact.name }}</span> <span class="margin-right-smaller">{{ currentContact.name }}</span>
<i <fluent-icon
v-if="!isHMACVerified" v-if="!isHMACVerified"
v-tooltip="$t('CONVERSATION.UNVERIFIED_SESSION')" v-tooltip="$t('CONVERSATION.UNVERIFIED_SESSION')"
class="ion-android-alert text-y-800 fs-default" class="text-y-800"
size="14"
icon="warning"
/> />
</h3> </h3>
<div class="conversation--header--actions"> <div class="conversation--header--actions">

View file

@ -234,8 +234,8 @@ export default {
return { return {
email: this.contentAttributes.email, email: this.contentAttributes.email,
cc: this.contentAttributes.cc_emails, cc: this.contentAttributes.cc_emails,
bcc: this.contentAttributes.bcc_emails bcc: this.contentAttributes.bcc_emails,
} };
}, },
hasAttachments() { hasAttachments() {
return !!(this.data.attachments && this.data.attachments.length > 0); return !!(this.data.attachments && this.data.attachments.length > 0);
@ -354,7 +354,7 @@ export default {
} }
&.is-private .file.message-text__wrap { &.is-private .file.message-text__wrap {
.ion-document-text { .file--icon {
color: var(--w-400); color: var(--w-400);
} }
.text-block-title { .text-block-title {

View file

@ -44,7 +44,11 @@
class="banner-close-button" class="banner-close-button"
@click="removeTweetSelection" @click="removeTweetSelection"
> >
<i v-tooltip="$t('CONVERSATION.REMOVE_SELECTION')" class="ion-close" /> <fluent-icon
v-tooltip="$t('CONVERSATION.REMOVE_SELECTION')"
size="16"
icon="dismiss"
/>
</button> </button>
</div> </div>
<ul class="conversation-panel"> <ul class="conversation-panel">

View file

@ -4,20 +4,20 @@
v-if="!currentChat.muted" v-if="!currentChat.muted"
v-tooltip="$t('CONTACT_PANEL.MUTE_CONTACT')" v-tooltip="$t('CONTACT_PANEL.MUTE_CONTACT')"
class="hollow secondary actions--button" class="hollow secondary actions--button"
icon="ion-volume-mute" icon="speaker-mute"
@click="mute" @click="mute"
/> />
<woot-button <woot-button
v-else v-else
v-tooltip.left="$t('CONTACT_PANEL.UNMUTE_CONTACT')" v-tooltip.left="$t('CONTACT_PANEL.UNMUTE_CONTACT')"
class="hollow secondary actions--button" class="hollow secondary actions--button"
icon="ion-volume-medium" icon="speaker-1"
@click="unmute" @click="unmute"
/> />
<woot-button <woot-button
v-tooltip="$t('CONTACT_PANEL.SEND_TRANSCRIPT')" v-tooltip="$t('CONTACT_PANEL.SEND_TRANSCRIPT')"
class="hollow secondary actions--button" class="hollow secondary actions--button"
icon="ion-share" icon="share"
@click="toggleEmailActionsModal" @click="toggleEmailActionsModal"
/> />
<resolve-action <resolve-action

View file

@ -2,38 +2,48 @@
<div class="message-text--metadata"> <div class="message-text--metadata">
<span class="time">{{ readableTime }}</span> <span class="time">{{ readableTime }}</span>
<span v-if="showSentIndicator" class="time"> <span v-if="showSentIndicator" class="time">
<i <fluent-icon
v-tooltip.top-start="$t('CHAT_LIST.SENT')" v-tooltip.top-start="$t('CHAT_LIST.SENT')"
class="icon ion-checkmark" icon="checkmark"
size="16"
/> />
</span> </span>
<i <fluent-icon
v-if="isEmail" v-if="isEmail"
v-tooltip.top-start="$t('CHAT_LIST.RECEIVED_VIA_EMAIL')" v-tooltip.top-start="$t('CHAT_LIST.RECEIVED_VIA_EMAIL')"
class="ion ion-android-mail" icon="mail"
class="action--icon"
size="16"
/> />
<i <fluent-icon
v-if="isPrivate" v-if="isPrivate"
v-tooltip.top-start="$t('CONVERSATION.VISIBLE_TO_AGENTS')" v-tooltip.top-start="$t('CONVERSATION.VISIBLE_TO_AGENTS')"
class="icon ion-android-lock" icon="lock-closed"
class="action--icon"
size="16"
@mouseenter="isHovered = true" @mouseenter="isHovered = true"
@mouseleave="isHovered = false" @mouseleave="isHovered = false"
/> />
<i <button @click="onTweetReply">
<fluent-icon
v-if="isATweet && (isIncoming || isOutgoing) && sourceId" v-if="isATweet && (isIncoming || isOutgoing) && sourceId"
v-tooltip.top-start="$t('CHAT_LIST.REPLY_TO_TWEET')" v-tooltip.top-start="$t('CHAT_LIST.REPLY_TO_TWEET')"
class="icon ion-reply cursor-pointer" icon="arrow-reply"
@click="onTweetReply" class="action--icon cursor-pointer"
size="16"
/> />
</button>
<a <a
v-if="isATweet && (isOutgoing || isIncoming) && linkToTweet" v-if="isATweet && (isOutgoing || isIncoming) && linkToTweet"
:href="linkToTweet" :href="linkToTweet"
target="_blank" target="_blank"
rel="noopener noreferrer nofollow" rel="noopener noreferrer nofollow"
> >
<i <fluent-icon
v-tooltip.top-start="$t('CHAT_LIST.VIEW_TWEET_IN_TWITTER')" v-tooltip.top-start="$t('CHAT_LIST.VIEW_TWEET_IN_TWITTER')"
class="icon ion-android-open cursor-pointer" icon="open"
class="action--icon cursor-pointer"
size="16"
/> />
</a> </a>
</div> </div>
@ -129,7 +139,7 @@ export default {
} }
} }
.icon { .action--icon {
color: var(--white); color: var(--white);
} }
} }
@ -143,7 +153,7 @@ export default {
} }
.message-text--metadata { .message-text--metadata {
align-items: flex-end; align-items: flex-start;
display: flex; display: flex;
.time { .time {
@ -153,10 +163,9 @@ export default {
line-height: 1.8; line-height: 1.8;
} }
i { .action--icon {
line-height: 1.4; margin-right: var(--space-small);
padding-right: var(--space-small); margin-left: var(--space-small);
padding-left: var(--space-small);
color: var(--s-900); color: var(--s-900);
} }

View file

@ -1,7 +1,7 @@
<template> <template>
<div class="file message-text__wrap"> <div class="file message-text__wrap">
<div class="icon-wrap"> <div class="icon-wrap">
<i class="ion-document-text"></i> <fluent-icon icon="document" class="file--icon" />
</div> </div>
<div class="meta"> <div class="meta">
<h5 class="text-block-title"> <h5 class="text-block-title">

View file

@ -13,11 +13,11 @@
@click="toggleQuotedContent" @click="toggleQuotedContent"
> >
<span v-if="showQuotedContent"> <span v-if="showQuotedContent">
<i class="ion-chevron-up" /> <fluent-icon icon="chevron-up" class="fluent-icon" size="16" />
{{ $t('CHAT_LIST.HIDE_QUOTED_TEXT') }} {{ $t('CHAT_LIST.HIDE_QUOTED_TEXT') }}
</span> </span>
<span v-else> <span v-else>
<i class="ion-chevron-down" /> <fluent-icon icon="chevron-down" class="fluent-icon" size="16" />
{{ $t('CHAT_LIST.SHOW_QUOTED_TEXT') }} {{ $t('CHAT_LIST.SHOW_QUOTED_TEXT') }}
</span> </span>
</button> </button>
@ -104,5 +104,9 @@ export default {
font-size: var(--font-size-mini); font-size: var(--font-size-mini);
padding-bottom: var(--space-small); padding-bottom: var(--space-small);
padding-top: var(--space-small); padding-top: var(--space-small);
.fluent-icon {
margin-bottom: var(--space-minus-smaller);
}
} }
</style> </style>

View file

@ -72,7 +72,8 @@
/> />
</div> </div>
<woot-button <woot-button
icon="ion-close" icon="dismiss"
icon-size="16"
variant="clear" variant="clear"
color-scheme="secondary" color-scheme="secondary"
@click="removeFilter" @click="removeFilter"

View file

@ -16,7 +16,9 @@
</p> </p>
</div> </div>
</div> </div>
<i class="ion-android-close modal--close" @click="$emit('close')"></i> <button class="cursor-pointer" @click="$emit('close')">
<fluent-icon icon="dismiss" />
</button>
</div> </div>
<div class="shortcut__wrap"> <div class="shortcut__wrap">
@ -111,14 +113,14 @@ export default {
} }
.header-wrap { .header-wrap {
align-items: flex-start;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; margin-bottom: var(--space-slab);
} }
.title-shortcut-key__wrap { .title-shortcut-key__wrap {
display: flex; display: flex;
margin-bottom: var(--space-small);
} }
.page-title { .page-title {

View file

@ -3,32 +3,35 @@ import { INBOX_TYPES } from 'shared/mixins/inboxMixin';
export const getInboxClassByType = (type, phoneNumber) => { export const getInboxClassByType = (type, phoneNumber) => {
switch (type) { switch (type) {
case INBOX_TYPES.WEB: case INBOX_TYPES.WEB:
return 'ion-earth'; return 'globe-desktop';
case INBOX_TYPES.FB: case INBOX_TYPES.FB:
return 'ion-social-facebook'; return 'brand-facebook';
case INBOX_TYPES.TWITTER: case INBOX_TYPES.TWITTER:
return 'ion-social-twitter'; return 'brand-twitter';
case INBOX_TYPES.TWILIO: case INBOX_TYPES.TWILIO:
return phoneNumber.startsWith('whatsapp') return phoneNumber.startsWith('whatsapp')
? 'ion-social-whatsapp-outline' ? 'brand-whatsapp'
: 'ion-android-textsms'; : 'brand-sms';
case INBOX_TYPES.WHATSAPP: case INBOX_TYPES.WHATSAPP:
return 'ion-social-whatsapp-outline'; return 'brand-whatsapp';
case INBOX_TYPES.API: case INBOX_TYPES.API:
return 'ion-cloud'; return 'cloud';
case INBOX_TYPES.EMAIL: case INBOX_TYPES.EMAIL:
return 'ion-ios-email'; return 'mail';
case INBOX_TYPES.TELEGRAM: case INBOX_TYPES.TELEGRAM:
return 'ion-ios-navigate'; return 'brand-telegram';
case INBOX_TYPES.LINE:
return 'brand-line';
default: default:
return 'ion-ios-chatbubble'; return 'chat';
} }
}; };

View file

@ -3,33 +3,35 @@ import { getInboxClassByType } from '../inbox';
describe('#Inbox Helpers', () => { describe('#Inbox Helpers', () => {
describe('getInboxClassByType', () => { describe('getInboxClassByType', () => {
it('should return correct class for web widget', () => { it('should return correct class for web widget', () => {
expect(getInboxClassByType('Channel::WebWidget')).toEqual('ion-earth'); expect(getInboxClassByType('Channel::WebWidget')).toEqual(
'globe-desktop'
);
}); });
it('should return correct class for fb page', () => { it('should return correct class for fb page', () => {
expect(getInboxClassByType('Channel::FacebookPage')).toEqual( expect(getInboxClassByType('Channel::FacebookPage')).toEqual(
'ion-social-facebook' 'brand-facebook'
); );
}); });
it('should return correct class for twitter profile', () => { it('should return correct class for twitter profile', () => {
expect(getInboxClassByType('Channel::TwitterProfile')).toEqual( expect(getInboxClassByType('Channel::TwitterProfile')).toEqual(
'ion-social-twitter' 'brand-twitter'
); );
}); });
it('should return correct class for twilio sms', () => { it('should return correct class for twilio sms', () => {
expect(getInboxClassByType('Channel::TwilioSms', '')).toEqual( expect(getInboxClassByType('Channel::TwilioSms', '')).toEqual(
'ion-android-textsms' 'brand-sms'
); );
}); });
it('should return correct class for whatsapp', () => { it('should return correct class for whatsapp', () => {
expect(getInboxClassByType('Channel::TwilioSms', 'whatsapp')).toEqual( expect(getInboxClassByType('Channel::TwilioSms', 'whatsapp')).toEqual(
'ion-social-whatsapp-outline' 'brand-whatsapp'
); );
}); });
it('should return correct class for Api', () => { it('should return correct class for Api', () => {
expect(getInboxClassByType('Channel::Api')).toEqual('ion-cloud'); expect(getInboxClassByType('Channel::Api')).toEqual('cloud');
}); });
it('should return correct class for Email', () => { it('should return correct class for Email', () => {
expect(getInboxClassByType('Channel::Email')).toEqual('ion-ios-email'); expect(getInboxClassByType('Channel::Email')).toEqual('mail');
}); });
}); });
}); });

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "رسالة صورة" "CONTENT": "رسالة صورة"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "رسالة صوتية" "CONTENT": "رسالة صوتية"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "رسالة فيديو" "CONTENT": "رسالة فيديو"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "مرفقات" "CONTENT": "مرفقات"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "الموقع الجغرافي" "CONTENT": "الموقع الجغرافي"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "قام بمشاركة رابط" "CONTENT": "قام بمشاركة رابط"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Missatge d'imatge" "CONTENT": "Missatge d'imatge"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Missatge d'àudio" "CONTENT": "Missatge d'àudio"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Missatge de vídeo" "CONTENT": "Missatge de vídeo"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Fitxer adjunt" "CONTENT": "Fitxer adjunt"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Ubicació" "CONTENT": "Ubicació"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "ha compartit una URL" "CONTENT": "ha compartit una URL"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Zpráva obrázku" "CONTENT": "Zpráva obrázku"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Zvuková zpráva" "CONTENT": "Zvuková zpráva"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Video zpráva" "CONTENT": "Video zpráva"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Přílohu souboru" "CONTENT": "Přílohu souboru"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Poloha" "CONTENT": "Poloha"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "sdílel URL" "CONTENT": "sdílel URL"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Billedbesked" "CONTENT": "Billedbesked"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Lydbesked" "CONTENT": "Lydbesked"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Video besked" "CONTENT": "Video besked"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Fil Vedhæftning" "CONTENT": "Fil Vedhæftning"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Lokation" "CONTENT": "Lokation"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "har delt en URL" "CONTENT": "har delt en URL"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Bildnachricht" "CONTENT": "Bildnachricht"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Audio-Nachricht" "CONTENT": "Audio-Nachricht"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Videonachricht" "CONTENT": "Videonachricht"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Dateianhang" "CONTENT": "Dateianhang"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Ort" "CONTENT": "Ort"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "hat eine URL geteilt" "CONTENT": "hat eine URL geteilt"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Μήνυμα εικόνας" "CONTENT": "Μήνυμα εικόνας"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Μήνυμα ήχου" "CONTENT": "Μήνυμα ήχου"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Μήνυμα βίντεο" "CONTENT": "Μήνυμα βίντεο"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Επισυναπτόμενο αρχείο" "CONTENT": "Επισυναπτόμενο αρχείο"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Θέση" "CONTENT": "Θέση"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "έχει μοιράσει ένα σύνδεσμο" "CONTENT": "έχει μοιράσει ένα σύνδεσμο"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Picture message" "CONTENT": "Picture message"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Audio message" "CONTENT": "Audio message"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Video message" "CONTENT": "Video message"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "File Attachment" "CONTENT": "File Attachment"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Location" "CONTENT": "Location"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "has shared a url" "CONTENT": "has shared a url"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Mensaje de imagen" "CONTENT": "Mensaje de imagen"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Mensaje de audio" "CONTENT": "Mensaje de audio"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Mensaje de vídeo" "CONTENT": "Mensaje de vídeo"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Archivo adjunto" "CONTENT": "Archivo adjunto"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Ubicación" "CONTENT": "Ubicación"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "ha compartido una url" "CONTENT": "ha compartido una url"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "پیام تصویری" "CONTENT": "پیام تصویری"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "پیام صوتی" "CONTENT": "پیام صوتی"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "پیام ویدیویی" "CONTENT": "پیام ویدیویی"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "فایل الصاقی" "CONTENT": "فایل الصاقی"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "مکان" "CONTENT": "مکان"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "یک آدرس URL به اشتراک گذاشته شده" "CONTENT": "یک آدرس URL به اشتراک گذاشته شده"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Kuvaviesti" "CONTENT": "Kuvaviesti"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Ääniviesti" "CONTENT": "Ääniviesti"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Videoviesti" "CONTENT": "Videoviesti"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Liite" "CONTENT": "Liite"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Sijainti" "CONTENT": "Sijainti"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "on jakanut URL-osoitteen" "CONTENT": "on jakanut URL-osoitteen"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Message image" "CONTENT": "Message image"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Message audio" "CONTENT": "Message audio"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Message vidéo" "CONTENT": "Message vidéo"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Pièce jointe" "CONTENT": "Pièce jointe"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Localisation" "CONTENT": "Localisation"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "a partagé une URL" "CONTENT": "a partagé une URL"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "הודעת תמונה" "CONTENT": "הודעת תמונה"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "הודעות קוליות" "CONTENT": "הודעות קוליות"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "הודעות וידאו" "CONTENT": "הודעות וידאו"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "קובץ מצורף" "CONTENT": "קובץ מצורף"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "מיקום" "CONTENT": "מיקום"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "שיתף קישור" "CONTENT": "שיתף קישור"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Picture message" "CONTENT": "Picture message"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Audio message" "CONTENT": "Audio message"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Video message" "CONTENT": "Video message"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "File Attachment" "CONTENT": "File Attachment"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Location" "CONTENT": "Location"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "has shared a url" "CONTENT": "has shared a url"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Képüzenet" "CONTENT": "Képüzenet"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Hangüzenet" "CONTENT": "Hangüzenet"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Videoüzenet" "CONTENT": "Videoüzenet"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Csatolt file" "CONTENT": "Csatolt file"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Hely" "CONTENT": "Hely"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "megosztott URL-t tartalmaz" "CONTENT": "megosztott URL-t tartalmaz"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Pesan gambar" "CONTENT": "Pesan gambar"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Pesan audio" "CONTENT": "Pesan audio"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Pesan video" "CONTENT": "Pesan video"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Lampiran File" "CONTENT": "Lampiran File"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Lokasi" "CONTENT": "Lokasi"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "telah membagikan url" "CONTENT": "telah membagikan url"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Messaggio immagine" "CONTENT": "Messaggio immagine"
}, },
"audio": { "audio": {
"ICON": "-quantità-alto",
"CONTENT": "Messaggio audio" "CONTENT": "Messaggio audio"
}, },
"video": { "video": {
"ICON": "videocam",
"CONTENT": "Messaggio video" "CONTENT": "Messaggio video"
}, },
"file": { "file": {
"ICON": "e-documento",
"CONTENT": "File Allegato" "CONTENT": "File Allegato"
}, },
"location": { "location": {
"ICON": "Posizione-ios",
"CONTENT": "Localizzazione" "CONTENT": "Localizzazione"
}, },
"fallback": { "fallback": {
"ICON": "e-link",
"CONTENT": "ha condiviso un url" "CONTENT": "ha condiviso un url"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "画像メッセージ" "CONTENT": "画像メッセージ"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "音声メッセージ" "CONTENT": "音声メッセージ"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "ビデオ メッセージ" "CONTENT": "ビデオ メッセージ"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "添付ファイル" "CONTENT": "添付ファイル"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "場所" "CONTENT": "場所"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "URLを共有しています" "CONTENT": "URLを共有しています"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "사진 메시지" "CONTENT": "사진 메시지"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "음성 메시지" "CONTENT": "음성 메시지"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "영상 메시지" "CONTENT": "영상 메시지"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "파일 첨부" "CONTENT": "파일 첨부"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "장소" "CONTENT": "장소"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "URL을 공유함" "CONTENT": "URL을 공유함"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "ചിത്ര സന്ദേശം" "CONTENT": "ചിത്ര സന്ദേശം"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "ഓഡിയോ സന്ദേശം" "CONTENT": "ഓഡിയോ സന്ദേശം"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "വീഡിയോ സന്ദേശം" "CONTENT": "വീഡിയോ സന്ദേശം"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "ഫയൽ അറ്റാച്ചുമെന്റ്" "CONTENT": "ഫയൽ അറ്റാച്ചുമെന്റ്"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "സ്ഥാനം" "CONTENT": "സ്ഥാനം"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "ഒരു യു. ആർ. എൽ പങ്കിട്ടു" "CONTENT": "ഒരു യു. ആർ. എൽ പങ്കിട്ടു"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Picture message" "CONTENT": "Picture message"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Audio message" "CONTENT": "Audio message"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Video message" "CONTENT": "Video message"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "File Attachment" "CONTENT": "File Attachment"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Location" "CONTENT": "Location"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "has shared a url" "CONTENT": "has shared a url"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Bericht met foto" "CONTENT": "Bericht met foto"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Audiobericht" "CONTENT": "Audiobericht"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Videobericht" "CONTENT": "Videobericht"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Bestandsbijlage" "CONTENT": "Bestandsbijlage"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Locatie" "CONTENT": "Locatie"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "heeft een url gedeeld" "CONTENT": "heeft een url gedeeld"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Bildemelding" "CONTENT": "Bildemelding"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Lydmelding" "CONTENT": "Lydmelding"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Video beskjed" "CONTENT": "Video beskjed"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Vedlegg" "CONTENT": "Vedlegg"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Plassering" "CONTENT": "Plassering"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "har delt en URL" "CONTENT": "har delt en URL"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Wiadomość obrazkowa" "CONTENT": "Wiadomość obrazkowa"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Wiadomość audio" "CONTENT": "Wiadomość audio"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Wiadomość wideo" "CONTENT": "Wiadomość wideo"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Załącznik pliku" "CONTENT": "Załącznik pliku"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Lokalizacja" "CONTENT": "Lokalizacja"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "udostępnił adres url" "CONTENT": "udostępnił adres url"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Mensagem de imagem" "CONTENT": "Mensagem de imagem"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Mensagem de áudio" "CONTENT": "Mensagem de áudio"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Mensagem de vídeo" "CONTENT": "Mensagem de vídeo"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Arquivo anexo" "CONTENT": "Arquivo anexo"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Local:" "CONTENT": "Local:"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "compartilhou uma url" "CONTENT": "compartilhou uma url"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Mensagem de imagem" "CONTENT": "Mensagem de imagem"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Mensagem de áudio" "CONTENT": "Mensagem de áudio"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Mensagem de vídeo" "CONTENT": "Mensagem de vídeo"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Arquivo anexo" "CONTENT": "Arquivo anexo"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Localização" "CONTENT": "Localização"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "compartilhou uma URL" "CONTENT": "compartilhou uma URL"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Изображение" "CONTENT": "Изображение"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Аудиосообщение" "CONTENT": "Аудиосообщение"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Видео" "CONTENT": "Видео"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Прикрепленный файл" "CONTENT": "Прикрепленный файл"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Местоположение" "CONTENT": "Местоположение"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "поделился ссылкой" "CONTENT": "поделился ссылкой"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Picture message" "CONTENT": "Picture message"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Audio message" "CONTENT": "Audio message"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Video message" "CONTENT": "Video message"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "File Attachment" "CONTENT": "File Attachment"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Location" "CONTENT": "Location"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "has shared a url" "CONTENT": "has shared a url"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Bildmeddelande" "CONTENT": "Bildmeddelande"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Ljudmeddelande" "CONTENT": "Ljudmeddelande"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Videomeddelande" "CONTENT": "Videomeddelande"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Bifogad fil" "CONTENT": "Bifogad fil"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Plats" "CONTENT": "Plats"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "har delat en webbadress" "CONTENT": "har delat en webbadress"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "பட செய்தி" "CONTENT": "பட செய்தி"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "ஆடியோ செய்தி" "CONTENT": "ஆடியோ செய்தி"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "வீடியோ செய்தி" "CONTENT": "வீடியோ செய்தி"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "பைல் இணைப்புகள்" "CONTENT": "பைல் இணைப்புகள்"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "இருப்பிடம்" "CONTENT": "இருப்பிடம்"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "ஒரு URL ஐப் பகிர்ந்துள்ளார்" "CONTENT": "ஒரு URL ஐப் பகிர்ந்துள்ளார்"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "ข้อความภาพ" "CONTENT": "ข้อความภาพ"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "ข้อความเสียง" "CONTENT": "ข้อความเสียง"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "ข้อความวิดิโอ" "CONTENT": "ข้อความวิดิโอ"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "เเนบไฟล์" "CONTENT": "เเนบไฟล์"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "สถานที่" "CONTENT": "สถานที่"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "ได้เเชร์ลิ้ง" "CONTENT": "ได้เเชร์ลิ้ง"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Görsel mesaj" "CONTENT": "Görsel mesaj"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Sesli mesaj" "CONTENT": "Sesli mesaj"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Video mesajı" "CONTENT": "Video mesajı"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Dosya eklentisi" "CONTENT": "Dosya eklentisi"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Yer" "CONTENT": "Yer"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "bir url paylaştı" "CONTENT": "bir url paylaştı"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Повідомлення з картинкою" "CONTENT": "Повідомлення з картинкою"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Аудіо-повідомлення" "CONTENT": "Аудіо-повідомлення"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Відеоповідомлення" "CONTENT": "Відеоповідомлення"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Повідомлення з файлом" "CONTENT": "Повідомлення з файлом"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Місцезнаходження" "CONTENT": "Місцезнаходження"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "поділився посиланням" "CONTENT": "поділився посиланням"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "Tin nhắn hình ảnh" "CONTENT": "Tin nhắn hình ảnh"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "Tin nhắn thoại" "CONTENT": "Tin nhắn thoại"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "Tin nhắn video" "CONTENT": "Tin nhắn video"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "Tập tin đính kèm" "CONTENT": "Tập tin đính kèm"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "Địa điểm" "CONTENT": "Địa điểm"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "có một đường dẫn chia sẻ" "CONTENT": "có một đường dẫn chia sẻ"
} }
}, },

View file

@ -53,27 +53,21 @@
], ],
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "图片消息" "CONTENT": "图片消息"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "音频消息" "CONTENT": "音频消息"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "视频消息" "CONTENT": "视频消息"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "附件" "CONTENT": "附件"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "位置" "CONTENT": "位置"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "分享了一个网址" "CONTENT": "分享了一个网址"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "图片消息" "CONTENT": "图片消息"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "音频消息" "CONTENT": "音频消息"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "视频消息" "CONTENT": "视频消息"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "附件" "CONTENT": "附件"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "位置" "CONTENT": "位置"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "分享了一个网址" "CONTENT": "分享了一个网址"
} }
}, },

View file

@ -54,27 +54,21 @@
}, },
"ATTACHMENTS": { "ATTACHMENTS": {
"image": { "image": {
"ICON": "ion-image",
"CONTENT": "圖片訊息" "CONTENT": "圖片訊息"
}, },
"audio": { "audio": {
"ICON": "ion-volume-high",
"CONTENT": "聲音訊息" "CONTENT": "聲音訊息"
}, },
"video": { "video": {
"ICON": "ion-ios-videocam",
"CONTENT": "影片訊息" "CONTENT": "影片訊息"
}, },
"file": { "file": {
"ICON": "ion-document",
"CONTENT": "附件" "CONTENT": "附件"
}, },
"location": { "location": {
"ICON": "ion-ios-location",
"CONTENT": "位置" "CONTENT": "位置"
}, },
"fallback": { "fallback": {
"ICON": "ion-link",
"CONTENT": "分享了一個網址" "CONTENT": "分享了一個網址"
} }
}, },

View file

@ -4,21 +4,21 @@ const campaigns = accountId => ({
routes: ['settings_account_campaigns', 'one_off'], routes: ['settings_account_campaigns', 'one_off'],
menuItems: { menuItems: {
back: { back: {
icon: 'ion-ios-arrow-back', icon: 'chevron-left',
label: 'HOME', label: 'HOME',
hasSubMenu: false, hasSubMenu: false,
toStateName: 'home', toStateName: 'home',
toState: frontendURL(`accounts/${accountId}/dashboard`), toState: frontendURL(`accounts/${accountId}/dashboard`),
}, },
ongoingCampaigns: { ongoingCampaigns: {
icon: 'ion-arrow-swap', icon: 'arrow-swap',
label: 'ONGOING', label: 'ONGOING',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/campaigns/ongoing`), toState: frontendURL(`accounts/${accountId}/campaigns/ongoing`),
toStateName: 'settings_account_campaigns', toStateName: 'settings_account_campaigns',
}, },
onOffCampaigns: { onOffCampaigns: {
icon: 'ion-radio-waves', icon: 'sound-source',
label: 'ONE_OFF', label: 'ONE_OFF',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/campaigns/one_off`), toState: frontendURL(`accounts/${accountId}/campaigns/one_off`),

View file

@ -17,7 +17,7 @@ const common = accountId => ({
], ],
menuItems: { menuItems: {
assignedToMe: { assignedToMe: {
icon: 'ion-chatbox-working', icon: 'chat',
label: 'CONVERSATIONS', label: 'CONVERSATIONS',
hasSubMenu: false, hasSubMenu: false,
key: '', key: '',
@ -26,35 +26,35 @@ const common = accountId => ({
toStateName: 'home', toStateName: 'home',
}, },
contacts: { contacts: {
icon: 'ion-person', icon: 'book-contacts',
label: 'CONTACTS', label: 'CONTACTS',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/contacts`), toState: frontendURL(`accounts/${accountId}/contacts`),
toStateName: 'contacts_dashboard', toStateName: 'contacts_dashboard',
}, },
notifications: { notifications: {
icon: 'ion-ios-bell', icon: 'alert',
label: 'NOTIFICATIONS', label: 'NOTIFICATIONS',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/notifications`), toState: frontendURL(`accounts/${accountId}/notifications`),
toStateName: 'notifications_dashboard', toStateName: 'notifications_dashboard',
}, },
report: { report: {
icon: 'ion-arrow-graph-up-right', icon: 'arrow-trending-lines',
label: 'REPORTS', label: 'REPORTS',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/reports`), toState: frontendURL(`accounts/${accountId}/reports`),
toStateName: 'settings_account_reports', toStateName: 'settings_account_reports',
}, },
campaigns: { campaigns: {
icon: 'ion-speakerphone', icon: 'megaphone',
label: 'CAMPAIGNS', label: 'CAMPAIGNS',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/campaigns`), toState: frontendURL(`accounts/${accountId}/campaigns`),
toStateName: 'settings_account_campaigns', toStateName: 'settings_account_campaigns',
}, },
settings: { settings: {
icon: 'ion-settings', icon: 'settings',
label: 'SETTINGS', label: 'SETTINGS',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/settings`), toState: frontendURL(`accounts/${accountId}/settings`),

View file

@ -8,14 +8,14 @@ const contacts = accountId => ({
], ],
menuItems: { menuItems: {
back: { back: {
icon: 'ion-ios-arrow-back', icon: 'chevron-left',
label: 'HOME', label: 'HOME',
hasSubMenu: false, hasSubMenu: false,
toStateName: 'home', toStateName: 'home',
toState: frontendURL(`accounts/${accountId}/dashboard`), toState: frontendURL(`accounts/${accountId}/dashboard`),
}, },
contacts: { contacts: {
icon: 'ion-person', icon: 'contact-card-group',
label: 'ALL_CONTACTS', label: 'ALL_CONTACTS',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/contacts`), toState: frontendURL(`accounts/${accountId}/contacts`),

View file

@ -11,49 +11,49 @@ const reports = accountId => ({
], ],
menuItems: { menuItems: {
back: { back: {
icon: 'ion-ios-arrow-back', icon: 'chevron-left',
label: 'HOME', label: 'HOME',
hasSubMenu: false, hasSubMenu: false,
toStateName: 'home', toStateName: 'home',
toState: frontendURL(`accounts/${accountId}/dashboard`), toState: frontendURL(`accounts/${accountId}/dashboard`),
}, },
reportOverview: { reportOverview: {
icon: 'ion-arrow-graph-up-right', icon: 'arrow-trending-lines',
label: 'REPORTS_OVERVIEW', label: 'REPORTS_OVERVIEW',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/reports/overview`), toState: frontendURL(`accounts/${accountId}/reports/overview`),
toStateName: 'settings_account_reports', toStateName: 'settings_account_reports',
}, },
csatReports: { csatReports: {
icon: 'ion-happy', icon: 'emoji',
label: 'CSAT', label: 'CSAT',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/reports/csat`), toState: frontendURL(`accounts/${accountId}/reports/csat`),
toStateName: 'csat_reports', toStateName: 'csat_reports',
}, },
agentReports: { agentReports: {
icon: 'ion-person-stalker', icon: 'people',
label: 'REPORTS_AGENT', label: 'REPORTS_AGENT',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/reports/agent`), toState: frontendURL(`accounts/${accountId}/reports/agent`),
toStateName: 'agent_reports', toStateName: 'agent_reports',
}, },
labelReports: { labelReports: {
icon: 'ion-pricetags', icon: 'tag',
label: 'REPORTS_LABEL', label: 'REPORTS_LABEL',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/reports/label`), toState: frontendURL(`accounts/${accountId}/reports/label`),
toStateName: 'label_reports', toStateName: 'label_reports',
}, },
inboxReports: { inboxReports: {
icon: 'ion-archive', icon: 'mail-inbox-all',
label: 'REPORTS_INBOX', label: 'REPORTS_INBOX',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/reports/inboxes`), toState: frontendURL(`accounts/${accountId}/reports/inboxes`),
toStateName: 'inbox_reports', toStateName: 'inbox_reports',
}, },
teamReports: { teamReports: {
icon: 'ion-ios-people', icon: 'people-team',
label: 'REPORTS_TEAM', label: 'REPORTS_TEAM',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/reports/teams`), toState: frontendURL(`accounts/${accountId}/reports/teams`),

View file

@ -32,42 +32,42 @@ const settings = accountId => ({
], ],
menuItems: { menuItems: {
back: { back: {
icon: 'ion-ios-arrow-back', icon: 'chevron-left',
label: 'HOME', label: 'HOME',
hasSubMenu: false, hasSubMenu: false,
toStateName: 'home', toStateName: 'home',
toState: frontendURL(`accounts/${accountId}/dashboard`), toState: frontendURL(`accounts/${accountId}/dashboard`),
}, },
agents: { agents: {
icon: 'ion-person-stalker', icon: 'people',
label: 'AGENTS', label: 'AGENTS',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/settings/agents/list`), toState: frontendURL(`accounts/${accountId}/settings/agents/list`),
toStateName: 'agent_list', toStateName: 'agent_list',
}, },
teams: { teams: {
icon: 'ion-ios-people', icon: 'people-team',
label: 'TEAMS', label: 'TEAMS',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/settings/teams/list`), toState: frontendURL(`accounts/${accountId}/settings/teams/list`),
toStateName: 'settings_teams_list', toStateName: 'settings_teams_list',
}, },
inboxes: { inboxes: {
icon: 'ion-archive', icon: 'mail-inbox-all',
label: 'INBOXES', label: 'INBOXES',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/settings/inboxes/list`), toState: frontendURL(`accounts/${accountId}/settings/inboxes/list`),
toStateName: 'settings_inbox_list', toStateName: 'settings_inbox_list',
}, },
labels: { labels: {
icon: 'ion-pricetags', icon: 'tag',
label: 'LABELS', label: 'LABELS',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/settings/labels/list`), toState: frontendURL(`accounts/${accountId}/settings/labels/list`),
toStateName: 'labels_list', toStateName: 'labels_list',
}, },
attributes: { attributes: {
icon: 'ion-code', icon: 'code',
label: 'CUSTOM_ATTRIBUTES', label: 'CUSTOM_ATTRIBUTES',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL( toState: frontendURL(
@ -76,14 +76,14 @@ const settings = accountId => ({
toStateName: 'attributes_list', toStateName: 'attributes_list',
}, },
automation: { automation: {
icon: 'ion-wrench', icon: 'autocorrect',
label: 'AUTOMATION', label: 'AUTOMATION',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/settings/automation/list`), toState: frontendURL(`accounts/${accountId}/settings/automation/list`),
toStateName: 'automation_list', toStateName: 'automation_list',
}, },
cannedResponses: { cannedResponses: {
icon: 'ion-chatbox-working', icon: 'chat-multiple',
label: 'CANNED_RESPONSES', label: 'CANNED_RESPONSES',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL( toState: frontendURL(
@ -92,21 +92,21 @@ const settings = accountId => ({
toStateName: 'canned_list', toStateName: 'canned_list',
}, },
settings_integrations: { settings_integrations: {
icon: 'ion-flash', icon: 'flash-on',
label: 'INTEGRATIONS', label: 'INTEGRATIONS',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/settings/integrations`), toState: frontendURL(`accounts/${accountId}/settings/integrations`),
toStateName: 'settings_integrations', toStateName: 'settings_integrations',
}, },
settings_applications: { settings_applications: {
icon: 'ion-asterisk', icon: 'star-emphasis',
label: 'APPLICATIONS', label: 'APPLICATIONS',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/settings/applications`), toState: frontendURL(`accounts/${accountId}/settings/applications`),
toStateName: 'settings_applications', toStateName: 'settings_applications',
}, },
general_settings_index: { general_settings_index: {
icon: 'ion-gear-a', icon: 'settings',
label: 'ACCOUNT_SETTINGS', label: 'ACCOUNT_SETTINGS',
hasSubMenu: false, hasSubMenu: false,
toState: frontendURL(`accounts/${accountId}/settings/general`), toState: frontendURL(`accounts/${accountId}/settings/general`),

View file

@ -18,7 +18,7 @@ export default [
attribute_model: 'conversation_attribute', attribute_model: 'conversation_attribute',
created_at: '2021-09-16T13:06:47.329Z', created_at: '2021-09-16T13:06:47.329Z',
default_value: null, default_value: null,
icon: 'ion-calculator', icon: 'fluent-calculator',
id: 10, id: 10,
updated_at: '2021-09-22T10:42:25.873Z', updated_at: '2021-09-22T10:42:25.873Z',
value: 2021, value: 2021,

View file

@ -70,7 +70,7 @@ describe('attributeMixin', () => {
attribute_model: 'conversation_attribute', attribute_model: 'conversation_attribute',
created_at: '2021-09-16T13:06:47.329Z', created_at: '2021-09-16T13:06:47.329Z',
default_value: null, default_value: null,
icon: 'ion-calculator', icon: 'fluent-calculator',
id: 10, id: 10,
updated_at: '2021-09-22T10:42:25.873Z', updated_at: '2021-09-22T10:42:25.873Z',
value: 2021, value: 2021,

View file

@ -36,7 +36,7 @@
variant="clear link" variant="clear link"
size="small" size="small"
color-scheme="secondary" color-scheme="secondary"
icon="ion-compose" icon="edit"
class-names="edit-button" class-names="edit-button"
@click="onEdit" @click="onEdit"
/> />

View file

@ -10,10 +10,11 @@
</h5> </h5>
<p class="option__body"> <p class="option__body">
<span v-if="email" class="email-icon-wrap"> <span v-if="email" class="email-icon-wrap">
<i class="icon ion-email" />{{ email }} <fluent-icon class="merge-contact--icon" icon="mail" size="12" />
{{ email }}
</span> </span>
<span v-if="phoneNumber" class="phone-icon-wrap"> <span v-if="phoneNumber" class="phone-icon-wrap">
<i class="icon ion-ios-telephone" /> <fluent-icon class="merge-contact--icon" icon="call" size="12" />
{{ phoneNumber }} {{ phoneNumber }}
</span> </span>
<span v-if="!phoneNumber && !email">{{ '---' }}</span> <span v-if="!phoneNumber && !email">{{ '---' }}</span>
@ -102,4 +103,9 @@ export default {
width: auto; width: auto;
} }
} }
.merge-contact--icon {
margin-bottom: var(--space-minus-micro);
margin-right: var(--space-micro);
}
</style> </style>

View file

@ -1,9 +1,11 @@
<template> <template>
<div class="contact-fields"> <div class="contact-fields">
<h3 class="block-title title">{{ $t('CONTACTS_PAGE.FIELDS') }}</h3> <h3 class="block-title title">
{{ $t('CONTACTS_PAGE.FIELDS') }}
</h3>
<attribute <attribute
:label="$t('CONTACT_PANEL.EMAIL_ADDRESS')" :label="$t('CONTACT_PANEL.EMAIL_ADDRESS')"
icon="ion-email" icon="mail"
emoji="" emoji=""
:value="contact.email" :value="contact.email"
:show-edit="true" :show-edit="true"
@ -11,7 +13,7 @@
/> />
<attribute <attribute
:label="$t('CONTACT_PANEL.PHONE_NUMBER')" :label="$t('CONTACT_PANEL.PHONE_NUMBER')"
icon="ion-ios-telephone" icon="call"
emoji="" emoji=""
:value="contact.phone_number" :value="contact.phone_number"
:show-edit="true" :show-edit="true"
@ -20,7 +22,7 @@
<attribute <attribute
v-if="additionalAttributes.location" v-if="additionalAttributes.location"
:label="$t('CONTACT_PANEL.LOCATION')" :label="$t('CONTACT_PANEL.LOCATION')"
icon="ion-map" icon="map"
emoji="🌍" emoji="🌍"
:value="additionalAttributes.location" :value="additionalAttributes.location"
:show-edit="true" :show-edit="true"
@ -33,7 +35,7 @@
> >
<attribute <attribute
:label="attribute" :label="attribute"
icon="ion-arrow-right-c" icon="chevron-right"
:value="customAttributes[attribute]" :value="customAttributes[attribute]"
:show-edit="true" :show-edit="true"
@update="value => onCustomAttributeUpdate(attribute, value)" @update="value => onCustomAttributeUpdate(attribute, value)"
@ -42,7 +44,7 @@
<woot-button <woot-button
size="small" size="small"
variant="link" variant="link"
icon="ion-plus" icon="add"
@click="handleCustomCreate" @click="handleCustomCreate"
> >
{{ $t('CUSTOM_ATTRIBUTES.ADD.TITLE') }} {{ $t('CUSTOM_ATTRIBUTES.ADD.TITLE') }}

View file

@ -33,7 +33,7 @@
<woot-button <woot-button
variant="hollow" variant="hollow"
size="small expanded" size="small expanded"
icon="ion-compose" icon="edit"
@click="onEditClick" @click="onEditClick"
> >
{{ $t('EDIT_CONTACT.BUTTON_LABEL') }} {{ $t('EDIT_CONTACT.BUTTON_LABEL') }}

View file

@ -33,7 +33,7 @@
<div class="child-contact-wrap"> <div class="child-contact-wrap">
<div class="child-arrow"> <div class="child-arrow">
<i class="ion-ios-arrow-up up" /> <fluent-icon icon="arrow-up" class="up" size="17" />
</div> </div>
<div <div
class="child-contact multiselect-wrap--medium" class="child-contact multiselect-wrap--medium"
@ -213,8 +213,8 @@ export default {
.up { .up {
position: absolute; position: absolute;
top: -11px; top: var(--space-minus-smaller);
left: var(--space-normal); left: var(--space-slab);
} }
.footer { .footer {

View file

@ -1,8 +1,7 @@
<template> <template>
<div class="context-menu"> <div class="context-menu">
<woot-button <woot-button
icon="ion-more" icon="more-vertical"
size="large"
class="button--delete-message" class="button--delete-message"
color-scheme="secondary" color-scheme="secondary"
variant="link" variant="link"
@ -19,7 +18,8 @@
<woot-button <woot-button
variant="clear" variant="clear"
size="small" size="small"
icon="ion-ios-copy-outline" icon="clipboard"
icon-size="16"
@click="handleCopy" @click="handleCopy"
> >
{{ $t('CONVERSATION.CONTEXT_MENU.COPY') }} {{ $t('CONVERSATION.CONTEXT_MENU.COPY') }}
@ -30,7 +30,8 @@
variant="clear" variant="clear"
color-scheme="alert" color-scheme="alert"
size="small" size="small"
icon="ion-trash-a" icon="delete"
icon-size="16"
@click="handleDelete" @click="handleDelete"
> >
{{ $t('CONVERSATION.CONTEXT_MENU.DELETE') }} {{ $t('CONVERSATION.CONTEXT_MENU.DELETE') }}

View file

@ -19,7 +19,8 @@
v-tooltip="$t('NOTES.CONTENT_HEADER.DELETE')" v-tooltip="$t('NOTES.CONTENT_HEADER.DELETE')"
variant="smooth" variant="smooth"
size="tiny" size="tiny"
icon="ion-trash-b" icon="delete"
icon-size="16"
color-scheme="secondary" color-scheme="secondary"
@click="onDelete" @click="onDelete"
/> />

View file

@ -4,7 +4,7 @@
:class="{ 'border-left': showAvatar }" :class="{ 'border-left': showAvatar }"
> >
<span v-if="showAvatar" class="close-button" @click="onClose"> <span v-if="showAvatar" class="close-button" @click="onClose">
<i class="ion-android-close close-icon" /> <fluent-icon icon="dismiss" class="close-icon" />
</span> </span>
<contact-info <contact-info
:show-avatar="showAvatar" :show-avatar="showAvatar"

View file

@ -34,6 +34,7 @@ import Spinner from 'shared/components/Spinner.vue';
import Thumbnail from 'dashboard/components/widgets/Thumbnail.vue'; import Thumbnail from 'dashboard/components/widgets/Thumbnail.vue';
import EmptyState from 'dashboard/components/widgets/EmptyState.vue'; import EmptyState from 'dashboard/components/widgets/EmptyState.vue';
import timeMixin from 'dashboard/mixins/time'; import timeMixin from 'dashboard/mixins/time';
import FluentIcon from 'shared/components/FluentIcon/DashboardIcon';
export default { export default {
components: { components: {
@ -228,7 +229,7 @@ export default {
rel="noopener noreferrer nofollow" rel="noopener noreferrer nofollow"
href={`https://${profile}.com/${profiles[profile]}`} href={`https://${profile}.com/${profiles[profile]}`}
> >
<i class={`ion-social-${profile}`} /> <FluentIcon icon={`brand-${profile}`} />
</a> </a>
) )
)} )}

View file

@ -8,7 +8,7 @@
</div> </div>
<div class="right-aligned-wrap"> <div class="right-aligned-wrap">
<div class="search-wrap"> <div class="search-wrap">
<i class="ion-ios-search-strong search-icon" /> <fluent-icon icon="search" class="search-icon" />
<input <input
type="text" type="text"
:placeholder="$t('CONTACTS_PAGE.SEARCH_INPUT_PLACEHOLDER')" :placeholder="$t('CONTACTS_PAGE.SEARCH_INPUT_PLACEHOLDER')"
@ -28,7 +28,7 @@
<woot-button <woot-button
color-scheme="success" color-scheme="success"
icon="ion-android-add-circle" icon="add-circle"
class="margin-right-small" class="margin-right-small"
data-testid="create-new-contact" data-testid="create-new-contact"
@click="onToggleCreate" @click="onToggleCreate"
@ -38,7 +38,7 @@
<woot-button <woot-button
color-scheme="info" color-scheme="info"
icon="ion-android-upload" icon="cloud-backup"
@click="onToggleImport" @click="onToggleImport"
> >
{{ $t('IMPORT_CONTACTS.BUTTON_LABEL') }} {{ $t('IMPORT_CONTACTS.BUTTON_LABEL') }}

View file

@ -25,7 +25,7 @@
<woot-button <woot-button
variant="smooth" variant="smooth"
size="small" size="small"
icon="ion-compose" icon="edit"
color-scheme="secondary" color-scheme="secondary"
class="action-button" class="action-button"
@click="onEdit" @click="onEdit"

View file

@ -1,8 +1,10 @@
<template> <template>
<div class="medium-3 bg-white contact--panel"> <div class="medium-3 bg-white contact--panel">
<span class="close-button" @click="onPanelToggle"> <woot-button
<i class="ion-chevron-right" /> icon="chevron-right"
</span> class="close-button clear secondary"
@click="onPanelToggle"
/>
<contact-info :contact="contact" :channel-type="channelType" /> <contact-info :contact="contact" :channel-type="channelType" />
<draggable <draggable
:list="conversationSidebarItems" :list="conversationSidebarItems"
@ -254,7 +256,7 @@ export default {
.close-button { .close-button {
position: absolute; position: absolute;
right: $space-two; right: $space-two;
top: $space-slab + $space-two; top: $space-slab;
font-size: $font-size-default; font-size: $font-size-default;
color: $color-heading; color: $color-heading;
z-index: 9989; z-index: 9989;

Some files were not shown because too many files have changed in this diff Show more