@qualityunit/liveagent-help 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/dist/assets/ar-SA-BAGi-X54.js +1 -0
  2. package/dist/assets/bg-BG-BCITVy7V.js +1 -0
  3. package/dist/assets/bs-BA-CwieP_6Q.js +1 -0
  4. package/dist/assets/ca-ES-BkO3OQJp.js +1 -0
  5. package/dist/assets/cs-CZ-DdU8wu93.js +1 -0
  6. package/dist/assets/da-DK-BTDwvW9j.js +1 -0
  7. package/dist/assets/de-DE-IdTC_9hY.js +1 -0
  8. package/dist/assets/el-GR-DbTDCUnW.js +1 -0
  9. package/dist/assets/en-US-BiQuI_NB.js +1 -0
  10. package/dist/assets/en-VPmnwx-g.js +1 -0
  11. package/dist/assets/es-ES-C-BMis-f.js +1 -0
  12. package/dist/assets/et-EE-BYsL_7OC.js +1 -0
  13. package/dist/assets/fa-IR-DV05Ugvl.js +1 -0
  14. package/dist/assets/fi-FI-BxTY62gn.js +1 -0
  15. package/dist/assets/fil-PH-CzKKBvvx.js +1 -0
  16. package/dist/assets/fr-FR-CkALAUu_.js +1 -0
  17. package/dist/assets/he-IL-DGZ75XTm.js +1 -0
  18. package/dist/assets/hr-HR-CwieP_6Q.js +1 -0
  19. package/dist/assets/hu-HU-YnPqsV9m.js +1 -0
  20. package/dist/assets/id-ID-D1wNedlR.js +1 -0
  21. package/dist/assets/index-DMBaNfOP.js +10 -0
  22. package/dist/assets/index-DYty2IsF.css +1 -0
  23. package/dist/assets/it-IT-VhGcWe9v.js +1 -0
  24. package/dist/assets/ja-JP-Ce2blzX5.js +1 -0
  25. package/dist/assets/ko-KR-Da4QE7WU.js +1 -0
  26. package/dist/assets/lt-LT-Bg5Jzpit.js +1 -0
  27. package/dist/assets/lv-LV-FoFJ46S8.js +1 -0
  28. package/dist/assets/me-ME-Biy_oEN5.js +1 -0
  29. package/dist/assets/mk-MK-FmFgRqLi.js +1 -0
  30. package/dist/assets/ms-MY-BzBcFmOB.js +1 -0
  31. package/dist/assets/nl-NL-VNsaxY_S.js +1 -0
  32. package/dist/assets/no-NO-DbRgS8bY.js +1 -0
  33. package/dist/assets/pl-PL-BC_RNqOr.js +1 -0
  34. package/dist/assets/pt-BR-5RSzKrVs.js +1 -0
  35. package/dist/assets/ro-RO-Ds7w-arH.js +1 -0
  36. package/dist/assets/ru-RU-BE28ttmw.js +1 -0
  37. package/dist/assets/sk-SK-CjyQlNTr.js +1 -0
  38. package/dist/assets/sl-SI-Cgcni0mk.js +1 -0
  39. package/dist/assets/sr-CS-Biy_oEN5.js +1 -0
  40. package/dist/assets/sv-SE-C_mID3a-.js +1 -0
  41. package/dist/assets/th-TH-bbKk5NF4.js +1 -0
  42. package/dist/assets/tl-PH-DTTjGOfJ.js +1 -0
  43. package/dist/assets/tr-TR-BtU8XX02.js +1 -0
  44. package/dist/assets/uk-UA-C0wZTWK2.js +1 -0
  45. package/dist/assets/vi-VN-Bw_8ONxP.js +1 -0
  46. package/dist/assets/vls-BE-DynNaS0c.js +1 -0
  47. package/dist/assets/zh-CN-CD3mCoN0.js +1 -0
  48. package/dist/assets/zh-TW-B02B3zJt.js +1 -0
  49. package/{index.html → dist/index.html} +2 -3
  50. package/package.json +5 -1
  51. package/.github/workflows/npm-check-help.yml +0 -13
  52. package/.github/workflows/npm-publish-help.yml +0 -48
  53. package/crowdin.yml +0 -3
  54. package/src/app.css +0 -27
  55. package/src/lib/HelpCenter.svelte +0 -280
  56. package/src/lib/HelpCenterWrapper.svelte +0 -48
  57. package/src/lib/Themes/Dark.js +0 -189
  58. package/src/lib/Themes/Light.js +0 -189
  59. package/src/lib/Themes/palette.json +0 -175
  60. package/src/lib/components/common/AgentsTag.svelte +0 -73
  61. package/src/lib/components/common/Button.svelte +0 -60
  62. package/src/lib/components/common/Heading.svelte +0 -21
  63. package/src/lib/components/common/Link.svelte +0 -27
  64. package/src/lib/components/common/Paragraph.svelte +0 -30
  65. package/src/lib/components/common/ProgressTag.svelte +0 -33
  66. package/src/lib/components/common/ShortcutKey.svelte +0 -39
  67. package/src/lib/components/common/ShortcutKeys.svelte +0 -35
  68. package/src/lib/components/common/ThemeSwitcher.svelte +0 -24
  69. package/src/lib/components/containers/Card.svelte +0 -80
  70. package/src/lib/components/containers/ContactButton.svelte +0 -64
  71. package/src/lib/components/containers/ContactRow.svelte +0 -59
  72. package/src/lib/components/containers/LinkCard.svelte +0 -136
  73. package/src/lib/components/containers/Office.svelte +0 -44
  74. package/src/lib/components/containers/Page.svelte +0 -36
  75. package/src/lib/components/containers/Point.svelte +0 -43
  76. package/src/lib/components/containers/Tooltip.svelte +0 -143
  77. package/src/lib/components/containers/Widget.svelte +0 -79
  78. package/src/lib/components/nav/Menu.svelte +0 -283
  79. package/src/lib/components/nav/Progress.svelte +0 -249
  80. package/src/lib/pages/ContactUs.svelte +0 -372
  81. package/src/lib/pages/ImproveLaSkills.svelte +0 -117
  82. package/src/lib/pages/Shortcuts.svelte +0 -334
  83. package/src/lib/pages/steps/AddAgents.svelte +0 -175
  84. package/src/lib/pages/steps/AddDepartments.svelte +0 -81
  85. package/src/lib/pages/steps/ConfigureCustomerPortal.svelte +0 -171
  86. package/src/lib/pages/steps/ConnectEmailAccounts.svelte +0 -204
  87. package/src/lib/pages/steps/ConnectMessagingApps.svelte +0 -86
  88. package/src/lib/pages/steps/ConnectSocialMedia.svelte +0 -124
  89. package/src/lib/pages/steps/CreateCallCenter.svelte +0 -170
  90. package/src/lib/pages/steps/CreateContactWidget.svelte +0 -131
  91. package/src/lib/pages/steps/LearnTheBasics.svelte +0 -77
  92. package/src/lib/pages/steps/Step.svelte +0 -223
  93. package/src/lib/pages/steps/Summary.svelte +0 -106
  94. package/src/lib/utils/MockBackend.ts +0 -202
  95. package/src/lib/utils/menuStore.ts +0 -11
  96. package/src/lib/utils/progressStore.ts +0 -71
  97. package/src/lib/utils/themeStore.ts +0 -126
  98. package/src/lib/utils/types.ts +0 -50
  99. package/src/locales/ar-SA.json +0 -5
  100. package/src/locales/bg-BG.json +0 -5
  101. package/src/locales/bs-BA.json +0 -5
  102. package/src/locales/ca-ES.json +0 -3
  103. package/src/locales/cs-CZ.json +0 -5
  104. package/src/locales/da-DK.json +0 -5
  105. package/src/locales/de-DE.json +0 -5
  106. package/src/locales/el-GR.json +0 -5
  107. package/src/locales/en-US.json +0 -5
  108. package/src/locales/en.json +0 -16
  109. package/src/locales/es-ES.json +0 -5
  110. package/src/locales/et-EE.json +0 -5
  111. package/src/locales/fa-IR.json +0 -5
  112. package/src/locales/fi-FI.json +0 -5
  113. package/src/locales/fil-PH.json +0 -5
  114. package/src/locales/fr-FR.json +0 -5
  115. package/src/locales/he-IL.json +0 -3
  116. package/src/locales/hr-HR.json +0 -5
  117. package/src/locales/hu-HU.json +0 -5
  118. package/src/locales/id-ID.json +0 -5
  119. package/src/locales/it-IT.json +0 -5
  120. package/src/locales/ja-JP.json +0 -5
  121. package/src/locales/ko-KR.json +0 -4
  122. package/src/locales/lt-LT.json +0 -5
  123. package/src/locales/lv-LV.json +0 -5
  124. package/src/locales/me-ME.json +0 -5
  125. package/src/locales/mk-MK.json +0 -1
  126. package/src/locales/ms-MY.json +0 -3
  127. package/src/locales/nl-NL.json +0 -5
  128. package/src/locales/no-NO.json +0 -5
  129. package/src/locales/pl-PL.json +0 -5
  130. package/src/locales/pt-BR.json +0 -15
  131. package/src/locales/ro-RO.json +0 -5
  132. package/src/locales/ru-RU.json +0 -5
  133. package/src/locales/sk-SK.json +0 -5
  134. package/src/locales/sl-SI.json +0 -5
  135. package/src/locales/sr-CS.json +0 -5
  136. package/src/locales/sv-SE.json +0 -5
  137. package/src/locales/th-TH.json +0 -3
  138. package/src/locales/tl-PH.json +0 -5
  139. package/src/locales/tr-TR.json +0 -5
  140. package/src/locales/uk-UA.json +0 -4
  141. package/src/locales/vi-VN.json +0 -5
  142. package/src/locales/vls-BE.json +0 -3
  143. package/src/locales/zh-CN.json +0 -5
  144. package/src/locales/zh-TW.json +0 -5
  145. package/src/main.ts +0 -1
  146. package/src/vite-env.d.ts +0 -2
  147. package/svelte.config.js +0 -7
  148. package/tsconfig.json +0 -21
  149. package/tsconfig.node.json +0 -9
  150. package/vite.config.js +0 -16
  151. /package/{public → dist}/assets/icons/add-agents.svg +0 -0
  152. /package/{public → dist}/assets/icons/add-chat-button.svg +0 -0
  153. /package/{public → dist}/assets/icons/add-departments.svg +0 -0
  154. /package/{public → dist}/assets/icons/add-voice-support.svg +0 -0
  155. /package/{public → dist}/assets/icons/admin.svg +0 -0
  156. /package/{public → dist}/assets/icons/arrow-right.svg +0 -0
  157. /package/{public → dist}/assets/icons/at-symbol.svg +0 -0
  158. /package/{public → dist}/assets/icons/brush.svg +0 -0
  159. /package/{public → dist}/assets/icons/calls.svg +0 -0
  160. /package/{public → dist}/assets/icons/chat-with-us.svg +0 -0
  161. /package/{public → dist}/assets/icons/chat_buttons.svg +0 -0
  162. /package/{public → dist}/assets/icons/checkmark.svg +0 -0
  163. /package/{public → dist}/assets/icons/connect-email-account.svg +0 -0
  164. /package/{public → dist}/assets/icons/connect-messaging-apps.svg +0 -0
  165. /package/{public → dist}/assets/icons/connect-social-media.svg +0 -0
  166. /package/{public → dist}/assets/icons/edit.svg +0 -0
  167. /package/{public → dist}/assets/icons/facebook_logo.svg +0 -0
  168. /package/{public → dist}/assets/icons/form.svg +0 -0
  169. /package/{public → dist}/assets/icons/goal.svg +0 -0
  170. /package/{public → dist}/assets/icons/incoming.svg +0 -0
  171. /package/{public → dist}/assets/icons/info.svg +0 -0
  172. /package/{public → dist}/assets/icons/instagram_logo.svg +0 -0
  173. /package/{public → dist}/assets/icons/invitations.svg +0 -0
  174. /package/{public → dist}/assets/icons/key_command.svg +0 -0
  175. /package/{public → dist}/assets/icons/key_down.svg +0 -0
  176. /package/{public → dist}/assets/icons/key_left_click.svg +0 -0
  177. /package/{public → dist}/assets/icons/key_middle_click.svg +0 -0
  178. /package/{public → dist}/assets/icons/key_shift.svg +0 -0
  179. /package/{public → dist}/assets/icons/key_up.svg +0 -0
  180. /package/{public → dist}/assets/icons/learn-the-basics.svg +0 -0
  181. /package/{public → dist}/assets/icons/learn.svg +0 -0
  182. /package/{public → dist}/assets/icons/messenger_logo.svg +0 -0
  183. /package/{public → dist}/assets/icons/next.svg +0 -0
  184. /package/{public → dist}/assets/icons/open_in_new.svg +0 -0
  185. /package/{public → dist}/assets/icons/outgoing.svg +0 -0
  186. /package/{public → dist}/assets/icons/owner.svg +0 -0
  187. /package/{public → dist}/assets/icons/palette.svg +0 -0
  188. /package/{public → dist}/assets/icons/progress-submenu.svg +0 -0
  189. /package/{public → dist}/assets/icons/progress.svg +0 -0
  190. /package/{public → dist}/assets/icons/questionmark.svg +0 -0
  191. /package/{public → dist}/assets/icons/resolve.svg +0 -0
  192. /package/{public → dist}/assets/icons/rocket.svg +0 -0
  193. /package/{public → dist}/assets/icons/sent.svg +0 -0
  194. /package/{public → dist}/assets/icons/setup-customer-portal.svg +0 -0
  195. /package/{public → dist}/assets/icons/shortcuts.svg +0 -0
  196. /package/{public → dist}/assets/icons/show.svg +0 -0
  197. /package/{public → dist}/assets/icons/smiley-face.svg +0 -0
  198. /package/{public → dist}/assets/icons/ticket.svg +0 -0
  199. /package/{public → dist}/assets/icons/unfinished.svg +0 -0
  200. /package/{public → dist}/assets/icons/viber_logo.svg +0 -0
  201. /package/{public → dist}/assets/icons/videocall.svg +0 -0
  202. /package/{public → dist}/assets/icons/warning.svg +0 -0
  203. /package/{public → dist}/assets/icons/whatsapp_logo.svg +0 -0
  204. /package/{public → dist}/assets/icons/winky-face.svg +0 -0
  205. /package/{public → dist}/assets/icons/x_logo.svg +0 -0
  206. /package/{public → dist}/assets/icons/youtube_logo.svg +0 -0
  207. /package/{public → dist}/assets/images/all-done.svg +0 -0
  208. /package/{public → dist}/assets/images/bratislava.png +0 -0
  209. /package/{public → dist}/assets/images/card_background.svg +0 -0
  210. /package/{public → dist}/assets/images/configure_customer_portal.svg +0 -0
  211. /package/{public → dist}/assets/images/connect-email-accounts.svg +0 -0
  212. /package/{public → dist}/assets/images/connect-social-media.svg +0 -0
  213. /package/{public → dist}/assets/images/contact-widgets.svg +0 -0
  214. /package/{public → dist}/assets/images/create-chat-button.svg +0 -0
  215. /package/{public → dist}/assets/images/create_call_center.svg +0 -0
  216. /package/{public → dist}/assets/images/departments.svg +0 -0
  217. /package/{public → dist}/assets/images/facebook-background.png +0 -0
  218. /package/{public → dist}/assets/images/instagram-background.png +0 -0
  219. /package/{public → dist}/assets/images/kyiv.png +0 -0
  220. /package/{public → dist}/assets/images/liveagent.svg +0 -0
  221. /package/{public → dist}/assets/images/new-york.png +0 -0
  222. /package/{public → dist}/assets/images/reply_background.svg +0 -0
  223. /package/{public → dist}/assets/images/status-page-background.png +0 -0
  224. /package/{public → dist}/assets/images/support-portal-background.png +0 -0
  225. /package/{public → dist}/assets/images/tags.svg +0 -0
  226. /package/{public → dist}/assets/images/x-background.png +0 -0
  227. /package/{public → dist}/assets/images/youtube-background.png +0 -0
@@ -1,170 +0,0 @@
1
- <script lang="ts">
2
- import Step from "./Step.svelte";
3
- import Heading from "../../components/common/Heading.svelte";
4
- import Paragraph from "../../components/common/Paragraph.svelte";
5
- import Point from "../../components/containers/Point.svelte";
6
- import Widget from "../../components/containers/Widget.svelte";
7
- import {getContext, onMount} from "svelte";
8
- import { progress } from "../../utils/progressStore.ts";
9
- import { isCallCenterConnected } from '../../utils/MockBackend.ts';
10
- import { push } from "svelte-spa-router";
11
-
12
- interface PointData {
13
- heading: string;
14
- text: string;
15
- }
16
-
17
- const iconBasePath: string = getContext<string>('iconBasePath');
18
- const imageBasePath: string = getContext<string>('imageBasePath');
19
- const pointsData: PointData[] = [
20
- {
21
- heading: "Integration possibilities with many VoIP providers worldwide",
22
- text: "If your desired provider is not on the list, the general integration method can always be used, but feel free to let us know! We will do our best to add them."
23
- },
24
- {
25
- heading: "Unlimited call recording",
26
- text: "With unlimited call recordings, you can capture every phone interaction, providing a valuable resource for quality assurance and continual agent training."
27
- },
28
- {
29
- heading: "IVR (interactive voice response)",
30
- text: "This feature lets you play customized greetings or informational recordings to engage callers. It provides options for data collection during the call interaction and enables callers to interact through touch-tone signaling. Callers can invoke various actions by pressing numbers, such as being routed to the correct agent or department or requesting a callback."
31
- },
32
- {
33
- heading: "Call Devices",
34
- text: "If you prefer not to handle calls through your PC browser, you can seamlessly link an external hardware phone to LiveAgent. This function allows you to make or answer calls easily, offering an alternative method for managing phone interactions that best suits your convenience."
35
- },
36
- {
37
- heading: "Mobile apps",
38
- text: "To provide you with added convenience, we offer free mobile applications for both Android and iOS platforms. These apps allow you to manage your LiveAgent phone calls effortlessly while on the go."
39
- },
40
- {
41
- heading: "Call queue",
42
- text: "Our Call queue feature ensures no calls are missed even when all agents are occupied. Incoming calls enter a queue and await their turn until the next available agent can handle the call."
43
- }
44
- ]
45
-
46
- let stepCompleted: boolean = false;
47
-
48
- onMount(async (): Promise<void> => {
49
- const status = await isCallCenterConnected();
50
- stepCompleted = status.completionStatus || $progress[7]?.state === 'c';
51
- });
52
-
53
- async function handleCallCenter(): Promise<void> {
54
- const response = await isCallCenterConnected(true);
55
- stepCompleted = response.completionStatus;
56
- push('/configuration/call_center');
57
- }
58
- </script>
59
-
60
- <Step bind:stepFinished={stepCompleted}
61
- headerTitle="Create a call center"
62
- headerIconPath="{iconBasePath}add-voice-support.svg"
63
- nextStepCase="mid"
64
- nextStepUnfinishedText="To complete this step, connect your phone number from VoIP."
65
- nextStepFinishedText="We're nearly there. Just one last step remains! Let’s have a look at the Customer Portal and what it offers."
66
- path="/create-call-center"
67
- >
68
- <section class="top-section">
69
- <div class="left">
70
- <Heading text="Create a call center" />
71
- <Paragraph text="LiveAgent provides an integrated call center solution that allows you to receive, answer, and log phone calls as tickets. So, with a few steps, you can turn your helpdesk into a dynamic call center, eliminating the need for third-party calling solutions." />
72
- </div>
73
- <img class="image" src="{imageBasePath}create_call_center.svg" alt="Create call center" />
74
- </section>
75
- <section>
76
- <Heading text="What we offer?" />
77
- <div class="points-wrapper">
78
- {#each pointsData as point}
79
- <Point heading={point.heading} text={point.text} />
80
- {/each}
81
- </div>
82
- <div class="info-panel">
83
- <div class="info-panel-header">
84
- <img src="{iconBasePath}warning.svg" alt="warning icon">
85
- <h5>What do you need?</h5>
86
- </div>
87
- <ul>
88
- <li>Obtain a phone number from a VoIP (voice-over-internet provider).</li>
89
- <li>Connect it with your LiveAgent account</li>
90
- </ul>
91
- </div>
92
- <Widget heading="Call center"
93
- text="Upgrade your helpdesk to a active call center"
94
- iconSrc="{iconBasePath}calls.svg"
95
- cardPadding="14px 10px"
96
- textPadding="24px"
97
- buttonAction={handleCallCenter}
98
- buttonText={stepCompleted ? "Manage" : "Connect"}
99
- buttonReversed={stepCompleted}
100
- />
101
- </section>
102
- </Step>
103
-
104
- <style>
105
- .top-section {
106
- display: flex;
107
- flex-direction: column;
108
- align-items: center;
109
- justify-content: center;
110
- gap: 24px;
111
- }
112
-
113
- .points-wrapper {
114
- display: flex;
115
- flex-direction: column;
116
- gap: 6px;
117
- align-items: flex-start;
118
- padding: 0 10px;
119
- margin-bottom: 12px;
120
- }
121
-
122
- .info-panel {
123
- padding: 6px 10px;
124
- margin-bottom: 12px;
125
- border: 1px solid var(--event-blue-store);
126
- border-radius: 6px;
127
- background-color: var(--background-color-orange-primary);
128
- }
129
-
130
- .info-panel-header {
131
- display: flex;
132
- align-items: center;
133
- justify-content: flex-start;
134
- gap: 6px;
135
- }
136
-
137
- h5 {
138
- margin: 0;
139
- color: var(--text-color-primary);
140
- font-family: Roboto;
141
- font-size: 12px;
142
- font-weight: 700;
143
- line-height: 20px;
144
- }
145
-
146
- .image {
147
- margin-bottom: 24px;
148
- }
149
-
150
- ul {
151
- margin: 0;
152
- }
153
-
154
- li {
155
- color: var(--text-color-primary);
156
- font-family: Roboto;
157
- font-size: 12px;
158
- line-height: 20px;
159
- }
160
-
161
- @media (min-width: 768px) {
162
- .top-section {
163
- flex-direction: row;
164
- }
165
-
166
- li {
167
- font-size: 13px;
168
- }
169
- }
170
- </style>
@@ -1,131 +0,0 @@
1
- <script lang="ts">
2
- import Step from "./Step.svelte";
3
- import Heading from "../../components/common/Heading.svelte";
4
- import Paragraph from "../../components/common/Paragraph.svelte";
5
- import Widget from "../../components/containers/Widget.svelte";
6
- import {getContext, onMount} from "svelte";
7
- import { progress } from "../../utils/progressStore.ts";
8
- import {
9
- isCallButtonCreated,
10
- isChatButtonCreated,
11
- isChatInvitationCreated,
12
- isContactFormCreated,
13
- isVideoCallButtonCreated
14
- } from "../../utils/MockBackend.ts";
15
- import type {WidgetTypeInterface} from "../../utils/types.ts";
16
-
17
- let stepCompleted: boolean = false;
18
- const iconBasePath: string = getContext<string>('iconBasePath');
19
-
20
- let widgets: WidgetTypeInterface[] = [
21
- {
22
- id: 'chatButtons',
23
- heading: 'Chat buttons',
24
- text: 'These are easily customizable and allow your customers to instantly initiate a live chat with your agents right from your webpage. There are many types and pre-defined designs available. Make sure to check them out!',
25
- iconPath: `${iconBasePath}chat_buttons.svg`,
26
- buttonAction: isChatButtonCreated,
27
- completed: false,
28
- redirectPath: 'Chat-Buttons;'
29
- },
30
- {
31
- id: 'chatInvitations',
32
- heading: 'Chat invitations',
33
- text: 'Proactively engage your customers by sending automated chat invitations based on specific criteria, like pages visited or time spent on a page.',
34
- iconPath: `${iconBasePath}invitations.svg`,
35
- buttonAction: isChatInvitationCreated,
36
- completed: false,
37
- redirectPath: 'Invitations'
38
- },
39
- {
40
- id: 'contactForms',
41
- heading: 'Contact forms',
42
- text: 'This widget enables customers to quickly send their inquiries or feedback as tickets directly from your webpage by simply clicking a button or filling out an in-page form.',
43
- iconPath: `${iconBasePath}form.svg`,
44
- buttonAction: isContactFormCreated,
45
- completed: false,
46
- redirectPath: 'Contact-Button'
47
- },
48
- {
49
- id: 'callButtons',
50
- heading: 'Call buttons',
51
- text: 'These simple buttons let your customers start a direct call from their web browser with an available agent from your team in LiveAgent.',
52
- iconPath: `${iconBasePath}calls.svg`,
53
- buttonAction: isCallButtonCreated,
54
- completed: false,
55
- redirectPath: 'Call-Configuration'
56
- },
57
- {
58
- id: 'videoCallButtons',
59
- heading: 'Video call buttons',
60
- text: 'As the name suggests, this button offers an opportunity for face-to-face interaction, allowing customers and agents to connect even more personally.',
61
- iconPath: `${iconBasePath}videocall.svg`,
62
- buttonAction: isVideoCallButtonCreated,
63
- completed: false,
64
- redirectPath: 'Video-Call-Configuration'
65
- }
66
- ];
67
-
68
- onMount(async (): Promise<void> => {
69
- stepCompleted = $progress[6]?.state === 'c';
70
- if (stepCompleted) {
71
- widgets = widgets.map(widget => ({...widget, completed: true}));
72
- } else {
73
- widgets = await Promise.all(widgets.map(async widget => {
74
- const result = await widget.buttonAction();
75
- return {...widget, completed: result.completionStatus};
76
- }))
77
- }
78
- });
79
-
80
- async function completeStep(id: string): Promise<void> {
81
- const widgetIndex: number = widgets.findIndex(w => w.id === id);
82
- if (widgetIndex !== -1) {
83
- const response = await widgets[widgetIndex].buttonAction(true);
84
- widgets[widgetIndex].completed = response.completionStatus;
85
- widgets = [...widgets];
86
- window.location.hash = widgets[widgetIndex].redirectPath;
87
- }
88
- }
89
-
90
- $: stepCompleted = widgets.every(widget => widget.completed);
91
-
92
- </script>
93
-
94
- <Step bind:stepFinished={stepCompleted}
95
- headerTitle="Create contact widget"
96
- headerIconPath="{iconBasePath}add-chat-button.svg"
97
- nextStepCase="mid"
98
- nextStepUnfinishedText="You can finish this step by creating any contact widget."
99
- nextStepFinishedText="Were you aware that with LiveAgent, you're able to manage actual phone calls too?"
100
- path="/create-contact-widget">
101
- <Heading text="Create contact widgets for your website" />
102
- <Paragraph text="LiveAgent provides various contact widgets that aim to enhance your interactive customer-service experience and streamline communication. Each of these widgets offers a unique path to connect with customers, ultimately improving their experience and boosting your customer service performance." />
103
- <img src="public/assets/images/contact-widgets.svg" alt="contact widgets">
104
- <section>
105
- {#each widgets as widget}
106
- <Widget heading={widget.heading}
107
- text={widget.text}
108
- iconSrc={widget.iconPath}
109
- cardPadding="14px 10px 14px 16px"
110
- buttonAction={() => completeStep(widget.id)}
111
- buttonText={widget.completed ? "Manage" : "Create"}
112
- buttonReversed={widget.completed} />
113
- {/each}
114
- </section>
115
- </Step>
116
-
117
- <style>
118
- section {
119
- display: flex;
120
- flex-direction: column;
121
- align-items: flex-start;
122
- gap: 10px;
123
- padding: 16px 20px;
124
- border-radius: 6px;
125
- background-color: var(--background-color-grey-secondary);
126
- }
127
-
128
- img {
129
- margin: 24px 0;
130
- }
131
- </style>
@@ -1,77 +0,0 @@
1
- <script lang="ts">
2
- import Step from "./Step.svelte";
3
- import Paragraph from "../../components/common/Paragraph.svelte";
4
- import Heading from "../../components/common/Heading.svelte";
5
- import {onMount} from "svelte";
6
- import {progress} from "../../utils/progressStore.ts";
7
-
8
- let stepCompleted = false;
9
-
10
- onMount(() => {
11
- stepCompleted = $progress[0].state === 'c'
12
- })
13
- </script>
14
-
15
- <Step bind:stepFinished = {stepCompleted}
16
- headerTitle = "Learn the basics"
17
- headerIconPath = "public/assets/icons/learn-the-basics.svg"
18
- hideSkipStepButton = {true}
19
- nextStepCase = 'first'
20
- nextStepUnfinishedText = "Already familiar with the fundamentals of LiveAgent? Let's proceed with the setup."
21
- nextStepFinishedText = "Now that you've understood the fundamentals, it's time to begin setting up the software."
22
- path = "/learn-the-basics"
23
- >
24
- <section>
25
- <Heading text="How does LiveAgent work?"/>
26
- <Paragraph text="LiveAgent helpdesk software is a customer service tool that helps manage and streamline interactions with customers across multiple channels such as email, live chat, phone calls, and social media." />
27
- <Paragraph text="The software sorts incoming customer queries automatically into tickets and assigns them to the appropriate department or agent using predefined rules. It provides a single, shared inbox where agents can access and respond to all customer inquiries. LiveAgent also offers features such as automation rules, SLA, reports, analytics, and a knowledge base that aids in self-service." />
28
- <Paragraph text="In essence, LiveAgent improves the efficiency of your customer service and ensures all customer communications are dealt with in a timely and organized manner." />
29
- <img src='public/assets/images/liveagent.svg' alt="LiveAgent in a nutshell">
30
- </section>
31
- <section>
32
- <Heading text="What is a ticket?"/>
33
- <Paragraph text="A helpdesk ticket is essentially a digital record of a customer's request for help or assistance. This ticket contains all the relevant information about the customer's issue or query, including their contact details, the nature of the problem, and any interactions that have been had with the customer regarding the issue. The ticket can originate from various sources, such as emails, phone calls, live chats, or social media messages."/>
34
- <img src='public/assets/images/tags.svg' alt="Tags">
35
- <Paragraph text="As the issue progresses toward resolution, the ticket gets updated with new actions, responses, or notes. The ticket goes through various states - starting from being 'new', to being 'answered' when an agent answers, 'open' when the customer replies, and lastly ’resolved’ when the issue is resolved. If the ticket isn't reopened, it will conclude its cycle with the final and irreversible ‘closed’ status. This system ensures that every customer's problem is systematically tracked, addressed, and resolved.To aid in managing and distributing tickets, it's important to create Departments. This effectively delegates authority and responsibility pertaining to the tickets, ensuring each ticket gets directed to the right team or person."/>
36
- </section>
37
- <section class="section3">
38
- <img src='public/assets/images/departments.svg' alt="Departments">
39
- <div>
40
- <Heading text="What is a department"/>
41
- <Paragraph text='A Department refers to a designated group within the organization that handles specific tickets or customer inquiries. It may represent different functional areas within a company like "Customer Service", "Technical Support", "Billing", or "Sales", or it may represent different language skills or team proficiency like “Sales - English”, “Sales - German” or “Technical - 2nd level”. This ensures tickets are quickly assigned to the right people, which can resolve issues faster and more efficiently.' />
42
- </div>
43
- </section>
44
- <section>
45
- <Heading text="What is an agent?"/>
46
- <Paragraph text="An Agent is a member of your support team who interacts directly with your customers to resolve their queries or issues. They are essentially the users of the LiveAgent software within your LiveAgent account, tasked with responding to customer inquiries that arrive as tickets."/>
47
- </section>
48
- </Step>
49
-
50
- <style>
51
- section {
52
- display: flex;
53
- flex-direction: column;
54
- padding: 12px 0;
55
- }
56
-
57
- .section3 {
58
- flex-direction: column-reverse;
59
- gap: 16px;
60
- }
61
-
62
- img {
63
- margin: 24px auto;
64
- }
65
-
66
- @media (min-width: 768px) {
67
- section {
68
- flex-flow: wrap row;
69
- align-items: flex-start;
70
- }
71
-
72
- .section3 {
73
- flex-direction: row;
74
- flex-wrap: nowrap;
75
- }
76
- }
77
- </style>
@@ -1,223 +0,0 @@
1
- <script lang="ts">
2
- import Progress from "../../components/nav/Progress.svelte";
3
- import {completeStep, skipStep, areSteps0To7Completed} from "../../utils/progressStore.ts";
4
- import Button from "../../components/common/Button.svelte";
5
- import {currentTheme} from "../../utils/themeStore.ts";
6
-
7
- export let hideSkipStepButton: boolean = false;
8
- export let headerTitle: string;
9
- export let headerIconPath: string;
10
- export let nextStepCase: 'first' | 'mid' | 'last';
11
- export let nextStepText: string = '';
12
- export let nextStepUnfinishedText: string;
13
- export let nextStepFinishedText: string;
14
- export let path: string;
15
- export let stepFinished: boolean = false;
16
-
17
- let isBottom: boolean = false;
18
- let nextStepButtonDisabled: boolean = false;
19
- let nextStepButtonText: string = 'Next step';
20
- let nextStepButtonIcon: string = 'public/assets/icons/next.svg';
21
- let nextStepButtonAlt: string = 'next';
22
-
23
- function handleFinishStep(): void {
24
- completeStep(path);
25
- }
26
-
27
- function handleSkipStep(): void {
28
- skipStep(path);
29
- }
30
-
31
- $: {
32
- switch (nextStepCase) {
33
- case 'first':
34
- nextStepText = isBottom ? nextStepFinishedText : nextStepUnfinishedText;
35
- nextStepButtonText = "Let's start";
36
- nextStepButtonIcon = 'public/assets/icons/rocket.svg';
37
- nextStepButtonAlt = 'rocket';
38
- nextStepButtonDisabled = false;
39
- break;
40
- case 'mid':
41
- nextStepText = nextStepUnfinishedText;
42
- nextStepButtonDisabled = !stepFinished;
43
- break;
44
- case 'last':
45
- nextStepText = allStepsCompleted ? nextStepFinishedText : nextStepUnfinishedText;
46
- nextStepButtonText = allStepsCompleted ? "Finish" : "Redo unfinished steps";
47
- nextStepButtonIcon = allStepsCompleted ? 'public/assets/icons/checkmark.svg' : 'public/assets/icons/next.svg';
48
- nextStepButtonAlt = allStepsCompleted ? 'check' : 'next';
49
- nextStepButtonDisabled = !allStepsCompleted;
50
- break;
51
- }
52
- }
53
-
54
- $: allStepsCompleted = areSteps0To7Completed();
55
-
56
- $: if (stepFinished) {
57
- hideSkipStepButton = true;
58
- nextStepButtonDisabled = false;
59
- nextStepText = nextStepFinishedText;
60
- }
61
-
62
- </script>
63
-
64
- <div class="Step">
65
- <Progress />
66
- <div class="header">
67
- <div class="heading">
68
- <img class="icon" src={headerIconPath} alt="heading icon"/>
69
- <h1 class="title">{headerTitle}</h1>
70
- </div>
71
- {#if !hideSkipStepButton}
72
- <button class="skipButton" on:click={handleSkipStep}>Skip this step</button>
73
- {/if}
74
- </div>
75
- <div class="content">
76
- <article>
77
- <slot />
78
- </article>
79
- <section class="nextStep">
80
- <p class="nextStepText">{nextStepText}</p>
81
- <Button disabled={nextStepButtonDisabled}
82
- onClick={handleFinishStep}
83
- text={nextStepButtonText}
84
- src={nextStepButtonIcon}
85
- alt={nextStepButtonAlt}
86
- />
87
- </section>
88
- </div>
89
- </div>
90
-
91
- <style>
92
- .Step {
93
- width: 100%;
94
- height: 100%;
95
- }
96
-
97
- article {
98
- position: relative;
99
- display: block;
100
- height: 100%;
101
- width: 100%;
102
- padding: 20px;
103
- margin-bottom: 20px;
104
- background-color: var(--background-color-secondary);
105
- border: 1px solid var(--border-color-primary);
106
- border-radius: 6px;
107
- overflow-x: hidden;
108
- overflow-y: auto;
109
- box-sizing: border-box;
110
- }
111
-
112
- .content {
113
- display: flex;
114
- flex-direction: column;
115
- padding: 0 24px;
116
- height: calc(100% - 90px);
117
- }
118
-
119
- .header {
120
- display: flex;
121
- justify-content: space-between;
122
- align-items: center;
123
- padding: 0 20px;
124
- margin-top: 20px;
125
- margin-bottom: 10px;
126
- }
127
-
128
- .heading {
129
- display: flex;
130
- justify-content: center;
131
- align-items: center;
132
- }
133
-
134
- .title {
135
- display: flex;
136
- align-items: center;
137
- margin: 0;
138
- color: var(--text-color-primary);
139
- font-size: 13px;
140
- font-weight: 700;
141
- line-height: 20px;
142
- }
143
-
144
- .icon {
145
- display: inline-block;
146
- margin-right: 5px;
147
- height: 24px;
148
- width: 24px;
149
- background-size: contain;
150
- background-repeat: no-repeat;
151
- }
152
-
153
-
154
- .skipButton {
155
- position: relative;
156
- padding-right: 20px;
157
- background: none;
158
- border: none;
159
- color: var(--text-color-secondary);
160
- font-size: 13px;
161
- font-weight: 700;
162
- line-height: 20px;
163
- cursor: pointer;
164
- }
165
-
166
- .skipButton::after {
167
- content: url("public/assets/icons/arrow-right.svg");
168
- position: absolute;
169
- top: 3px;
170
- right: 0;
171
- width: 16px;
172
- height: 16px;
173
- }
174
-
175
- .nextStep {
176
- position: sticky;
177
- bottom: 0;
178
- display: flex;
179
- align-items: center;
180
- justify-content: space-between;
181
- gap: 30px;
182
- margin: 0 -24px;
183
- padding: 20px 36px;
184
- background-color: var(--background-color-secondary);
185
- border: 1px solid var(--border-color-primary);
186
- }
187
-
188
- .nextStepText {
189
- color: var(--text-color-primary);
190
- font-family: Roboto;
191
- font-size: 12px;
192
- font-weight: 700;
193
- line-height: 20px;
194
- }
195
-
196
- @media (min-width: 768px) {
197
- .Step {
198
- max-width: 630px;
199
- overflow: hidden;
200
- }
201
-
202
- .content {
203
- padding: 0;
204
- height: calc(100% - 170px);
205
- }
206
-
207
- article {
208
- height: calc(100% - 100px);
209
- padding: 20px 35px;
210
- margin-bottom: 0;
211
- }
212
-
213
- .header {
214
- padding: 0;
215
- }
216
-
217
- .nextStep {
218
- padding: 6px 36px;
219
- margin: -5px 0 0;
220
- border-radius: 6px;
221
- }
222
- }
223
- </style>