From 613fb0b06425fd61d4808375c0ab019c13cc1ca6 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Mon, 5 Dec 2022 11:16:00 +0530 Subject: [PATCH 01/48] fix: Unable to add emoji exactly where the cursor is at (#5865) * fix: Unable to add emoji exactly where the cursor is at * chore: Minor fixes * chore: Review fixes * chore: Code clean up * chore: Review fixes * chore: Minor fixes * chore: Review fixes --- .../components/widgets/WootWriter/Editor.vue | 20 ++++++++++++++++ .../widgets/conversation/ReplyBox.vue | 23 ++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/app/javascript/dashboard/components/widgets/WootWriter/Editor.vue b/app/javascript/dashboard/components/widgets/WootWriter/Editor.vue index a00a3bf5a..bd47074ce 100644 --- a/app/javascript/dashboard/components/widgets/WootWriter/Editor.vue +++ b/app/javascript/dashboard/components/widgets/WootWriter/Editor.vue @@ -65,6 +65,7 @@ export default { placeholder: { type: String, default: '' }, isPrivate: { type: Boolean, default: false }, enableSuggestions: { type: Boolean, default: true }, + updateSelectionWith: { type: String, default: '' }, }, data() { return { @@ -162,6 +163,25 @@ export default { isPrivate() { this.reloadState(); }, + + updateSelectionWith(newValue, oldValue) { + if (!this.editorView) { + return null; + } + if (newValue !== oldValue) { + if (this.updateSelectionWith !== '') { + const node = this.editorView.state.schema.text( + this.updateSelectionWith + ); + const tr = this.editorView.state.tr.replaceSelectionWith(node); + this.editorView.focus(); + this.state = this.editorView.state.apply(tr); + this.emitOnChange(); + this.$emit('clear-selection'); + } + } + return null; + }, }, created() { this.state = createState(this.value, this.placeholder, this.plugins); diff --git a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue index e7c825752..fdbb2fbdd 100644 --- a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue +++ b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue @@ -60,6 +60,7 @@ class="input" :is-private="isOnPrivateNote" :placeholder="messagePlaceHolder" + :update-selection-with="updateEditorSelectionWith" :min-height="4" @typing-off="onTypingOff" @typing-on="onTypingOn" @@ -67,6 +68,7 @@ @blur="onBlur" @toggle-user-mention="toggleUserMention" @toggle-canned-menu="toggleCannedMenu" + @clear-selection="clearEditorSelection" />
@@ -215,6 +217,7 @@ export default { ccEmails: '', doAutoSaveDraft: () => {}, showWhatsAppTemplatesModal: false, + updateEditorSelectionWith: '', }; }, computed: { @@ -707,8 +710,26 @@ export default { } this.$nextTick(() => this.$refs.messageInput.focus()); }, + clearEditorSelection() { + this.updateEditorSelectionWith = ''; + }, + insertEmoji(emoji, selectionStart, selectionEnd) { + const { message } = this; + const newMessage = + message.slice(0, selectionStart) + + emoji + + message.slice(selectionEnd, message.length); + this.message = newMessage; + }, emojiOnClick(emoji) { - this.message = `${this.message}${emoji} `; + if (this.showRichContentEditor) { + this.updateEditorSelectionWith = emoji; + this.onFocus(); + } + if (!this.showRichContentEditor) { + const { selectionStart, selectionEnd } = this.$refs.messageInput.$el; + this.insertEmoji(emoji, selectionStart, selectionEnd); + } }, clearMessage() { this.message = ''; From c9cae01cb47213de9394055bbabbffd525c7859a Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Mon, 5 Dec 2022 12:30:56 +0530 Subject: [PATCH 02/48] fix: Support audio in safari browser (#5943) --- .../widgets/WootWriter/AudioRecorder.vue | 34 +++++++++++++++---- .../widgets/WootWriter/ReplyBottomPanel.vue | 9 ++++- app/javascript/shared/constants/messages.js | 5 +++ 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/app/javascript/dashboard/components/widgets/WootWriter/AudioRecorder.vue b/app/javascript/dashboard/components/widgets/WootWriter/AudioRecorder.vue index 893bdcf3a..9c53d4a1a 100644 --- a/app/javascript/dashboard/components/widgets/WootWriter/AudioRecorder.vue +++ b/app/javascript/dashboard/components/widgets/WootWriter/AudioRecorder.vue @@ -23,6 +23,7 @@ import 'videojs-wavesurfer/dist/videojs.wavesurfer.js'; import 'videojs-record/dist/videojs.record.js'; import 'videojs-record/dist/plugins/videojs.record.opus-recorder.js'; import { format, addSeconds } from 'date-fns'; +import { AUDIO_FORMATS } from 'shared/constants/messages'; WaveSurfer.microphone = MicrophonePlugin; @@ -70,13 +71,26 @@ export default { record: { audio: true, video: false, - displayMilliseconds: false, - maxLength: 300, - audioEngine: 'opus-recorder', - audioWorkerURL: encoderWorker, - audioChannels: 1, - audioSampleRate: 48000, - audioBitRate: 128, + ...(this.audioRecordFormat === AUDIO_FORMATS.WEBM && { + monitorGain: 0, + recordingGain: 1, + numberOfChannels: 1, + encoderSampleRate: 16000, + originalSampleRateOverride: 16000, + streamPages: true, + maxFramesPerPage: 1, + encoderFrameSize: 1, + encoderPath: 'opus-recorder/dist/waveWorker.min.js', + }), + ...(this.audioRecordFormat === AUDIO_FORMATS.OGG && { + displayMilliseconds: false, + maxLength: 300, + audioEngine: 'opus-recorder', + audioWorkerURL: encoderWorker, + audioChannels: 1, + audioSampleRate: 48000, + audioBitRate: 128, + }), }, }, }, @@ -86,6 +100,12 @@ export default { isRecording() { return this.player && this.player.record().isRecording(); }, + audioRecordFormat() { + if (this.isAWebWidgetInbox) { + return AUDIO_FORMATS.WEBM; + } + return AUDIO_FORMATS.OGG; + }, }, mounted() { window.Recorder = Recorder; diff --git a/app/javascript/dashboard/components/widgets/WootWriter/ReplyBottomPanel.vue b/app/javascript/dashboard/components/widgets/WootWriter/ReplyBottomPanel.vue index a8c26201e..bd67011e5 100644 --- a/app/javascript/dashboard/components/widgets/WootWriter/ReplyBottomPanel.vue +++ b/app/javascript/dashboard/components/widgets/WootWriter/ReplyBottomPanel.vue @@ -232,11 +232,18 @@ export default { return this.showFileUpload || this.isNote; }, showAudioRecorderButton() { + // Disable audio recorder for safari browser as recording is not supported + const isSafari = /^((?!chrome|android|crios|fxios).)*safari/i.test( + navigator.userAgent + ); + return ( this.isFeatureEnabledonAccount( this.accountId, FEATURE_FLAGS.VOICE_RECORDER - ) && this.showAudioRecorder + ) && + this.showAudioRecorder && + !isSafari ); }, showAudioPlayStopButton() { diff --git a/app/javascript/shared/constants/messages.js b/app/javascript/shared/constants/messages.js index e189a19a8..70235ce0e 100644 --- a/app/javascript/shared/constants/messages.js +++ b/app/javascript/shared/constants/messages.js @@ -72,3 +72,8 @@ export const CSAT_RATINGS = [ color: '#44CE4B', }, ]; + +export const AUDIO_FORMATS = { + WEBM: 'audio/webm', + OGG: 'audio/ogg', +}; From c3b6e1a732faab67feee143bb07caa12c6e4af16 Mon Sep 17 00:00:00 2001 From: Vishnu Narayanan Date: Mon, 5 Dec 2022 21:15:44 +0530 Subject: [PATCH 03/48] fix: update heroku app.json to use premium plans (#5349) * fix: update heroku app.json to use premium plans Use premium/paid dynos and addons as Heroku is set to deprecate free dynos/addons. * fix: set default stack to heroku-20 * chore: update heroku app.json to use new dyno types web and worker to use basic dynos redis and postgres to use mini --- app.json | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app.json b/app.json index 055235032..6324672fb 100644 --- a/app.json +++ b/app.json @@ -41,16 +41,24 @@ "formation": { "web": { "quantity": 1, - "size": "FREE" + "size": "basic" }, "worker": { "quantity": 1, - "size": "FREE" + "size": "basic" } }, "stack": "heroku-20", "image": "heroku/ruby", - "addons": [ "heroku-redis", "heroku-postgresql"], + "addons": [ + { + "plan": "heroku-redis:mini" + }, + { + "plan": "heroku-postgresql:mini" + } + ], + "stack": "heroku-20", "buildpacks": [ { "url": "heroku/ruby" From 87ef39ad9cc45e53f38c2c385ccc51689a9b9bae Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Tue, 6 Dec 2022 05:30:42 +0530 Subject: [PATCH 04/48] feat: Add the ability to search emojis (#5928) --- .../widgets/conversation/MessagesView.vue | 7 +- .../widgets/conversation/ReplyBox.vue | 13 +- .../dashboard/i18n/locale/en/emoji.json | 6 + .../dashboard/i18n/locale/en/index.js | 6 +- .../shared/components/emoji/EmojiInput.vue | 268 +- .../shared/components/emoji/emojis.json | 1 - .../shared/components/emoji/emojisGroup.json | 9291 +++++++++++++++++ .../widget/components/ChatInputWrap.vue | 7 +- app/javascript/widget/i18n/locale/en.json | 4 + 9 files changed, 9529 insertions(+), 74 deletions(-) create mode 100644 app/javascript/dashboard/i18n/locale/en/emoji.json delete mode 100644 app/javascript/shared/components/emoji/emojis.json create mode 100644 app/javascript/shared/components/emoji/emojisGroup.json diff --git a/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue b/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue index 0ebe35465..9df60200e 100644 --- a/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue +++ b/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue @@ -433,12 +433,7 @@ export default { position: fixed; left: unset; position: absolute; - - &::before { - transform: rotate(0deg); - left: var(--space-smaller); - bottom: var(--space-minus-slab); - } + bottom: var(--space-smaller); } } } diff --git a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue index fdbb2fbdd..e8326fed0 100644 --- a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue +++ b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue @@ -132,7 +132,6 @@ import { mapGetters } from 'vuex'; import { mixin as clickaway } from 'vue-clickaway'; import alertMixin from 'shared/mixins/alertMixin'; -import EmojiInput from 'shared/components/emoji/EmojiInput'; import CannedResponse from './CannedResponse'; import ResizableTextArea from 'shared/components/ResizableTextArea'; import AttachmentPreview from 'dashboard/components/widgets/AttachmentsPreview'; @@ -163,6 +162,8 @@ import { trimContent, debounce } from '@chatwoot/utils'; import wootConstants from 'dashboard/constants'; import { isEditorHotKeyEnabled } from 'dashboard/mixins/uiSettings'; +const EmojiInput = () => import('shared/components/emoji/EmojiInput'); + export default { components: { EmojiInput, @@ -401,7 +402,7 @@ export default { return conversationDisplayType !== CONDENSED; }, emojiDialogClassOnExpanedLayout() { - return this.isOnExpandedLayout && !this.popoutReplyBox + return this.isOnExpandedLayout || this.popoutReplyBox ? 'emoji-dialog--expanded' : ''; }, @@ -984,13 +985,13 @@ export default { .emoji-dialog { top: unset; - bottom: 12px; + bottom: var(--space-normal); left: -320px; right: unset; &::before { - right: -16px; - bottom: 10px; + right: var(--space-minus-normal); + bottom: var(--space-small); transform: rotate(270deg); filter: drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.08)); } @@ -1004,7 +1005,7 @@ export default { &::before { transform: rotate(0deg); left: var(--space-smaller); - bottom: var(--space-minus-slab); + bottom: var(--space-minus-small); } } .message-signature { diff --git a/app/javascript/dashboard/i18n/locale/en/emoji.json b/app/javascript/dashboard/i18n/locale/en/emoji.json new file mode 100644 index 000000000..fd81268fb --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/en/emoji.json @@ -0,0 +1,6 @@ +{ + "EMOJI": { + "PLACEHOLDER": "Search emojis", + "NOT_FOUND": "No emoji match your search" + } +} diff --git a/app/javascript/dashboard/i18n/locale/en/index.js b/app/javascript/dashboard/i18n/locale/en/index.js index 93e560119..0c674eef2 100644 --- a/app/javascript/dashboard/i18n/locale/en/index.js +++ b/app/javascript/dashboard/i18n/locale/en/index.js @@ -10,7 +10,8 @@ import chatlist from './chatlist.json'; import contact from './contact.json'; import contactFilters from './contactFilters.json'; import conversation from './conversation.json'; -import csatMgmtMgmt from './csatMgmt.json'; +import csatMgmt from './csatMgmt.json'; +import emoji from './emoji.json'; import generalSettings from './generalSettings.json'; import helpCenter from './helpCenter.json'; import inboxMgmt from './inboxMgmt.json'; @@ -40,7 +41,8 @@ export default { ...contact, ...contactFilters, ...conversation, - ...csatMgmtMgmt, + ...csatMgmt, + ...emoji, ...generalSettings, ...helpCenter, ...inboxMgmt, diff --git a/app/javascript/shared/components/emoji/EmojiInput.vue b/app/javascript/shared/components/emoji/EmojiInput.vue index 84891b0e2..32d9c3df1 100644 --- a/app/javascript/shared/components/emoji/EmojiInput.vue +++ b/app/javascript/shared/components/emoji/EmojiInput.vue @@ -1,41 +1,92 @@ - diff --git a/app/javascript/dashboard/routes/auth/auth.routes.js b/app/javascript/dashboard/routes/auth/auth.routes.js index f0093d8bc..0a12cb041 100644 --- a/app/javascript/dashboard/routes/auth/auth.routes.js +++ b/app/javascript/dashboard/routes/auth/auth.routes.js @@ -8,6 +8,12 @@ const Signup = () => import('./Signup'); export default { routes: [ + { + path: frontendURL('auth/signup'), + name: 'auth_signup', + component: Signup, + meta: { requireSignupEnabled: true }, + }, { path: frontendURL('auth'), name: 'auth', @@ -33,12 +39,6 @@ export default { redirectUrl: route.query.route_url, }), }, - { - path: 'signup', - name: 'auth_signup', - component: Signup, - meta: { requireSignupEnabled: true }, - }, { path: 'reset/password', name: 'auth_reset_password', diff --git a/app/javascript/dashboard/routes/auth/components/AuthInput.vue b/app/javascript/dashboard/routes/auth/components/AuthInput.vue new file mode 100644 index 000000000..a1bec50f5 --- /dev/null +++ b/app/javascript/dashboard/routes/auth/components/AuthInput.vue @@ -0,0 +1,93 @@ + + + + diff --git a/app/javascript/dashboard/routes/auth/components/AuthSubmitButton.vue b/app/javascript/dashboard/routes/auth/components/AuthSubmitButton.vue new file mode 100644 index 000000000..49e8412a5 --- /dev/null +++ b/app/javascript/dashboard/routes/auth/components/AuthSubmitButton.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/app/javascript/dashboard/routes/auth/components/Signup/Form.vue b/app/javascript/dashboard/routes/auth/components/Signup/Form.vue new file mode 100644 index 000000000..b0510303f --- /dev/null +++ b/app/javascript/dashboard/routes/auth/components/Signup/Form.vue @@ -0,0 +1,218 @@ + + + + diff --git a/app/javascript/dashboard/routes/auth/components/Testimonials/Index.vue b/app/javascript/dashboard/routes/auth/components/Testimonials/Index.vue new file mode 100644 index 000000000..24d56234f --- /dev/null +++ b/app/javascript/dashboard/routes/auth/components/Testimonials/Index.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/app/javascript/dashboard/routes/auth/components/Testimonials/TestimonialCard.vue b/app/javascript/dashboard/routes/auth/components/Testimonials/TestimonialCard.vue new file mode 100644 index 000000000..72d02753d --- /dev/null +++ b/app/javascript/dashboard/routes/auth/components/Testimonials/TestimonialCard.vue @@ -0,0 +1,93 @@ + + + + diff --git a/app/javascript/dashboard/routes/auth/components/Testimonials/TestimonialFooter.vue b/app/javascript/dashboard/routes/auth/components/Testimonials/TestimonialFooter.vue new file mode 100644 index 000000000..f225c15d5 --- /dev/null +++ b/app/javascript/dashboard/routes/auth/components/Testimonials/TestimonialFooter.vue @@ -0,0 +1,47 @@ + + + diff --git a/app/javascript/shared/components/FluentIcon/dashboard-icons.json b/app/javascript/shared/components/FluentIcon/dashboard-icons.json index e6783ca31..9d5e02327 100644 --- a/app/javascript/shared/components/FluentIcon/dashboard-icons.json +++ b/app/javascript/shared/components/FluentIcon/dashboard-icons.json @@ -94,6 +94,7 @@ "list-outline": "M2.75 18h12.5a.75.75 0 0 1 .102 1.493l-.102.007H2.75a.75.75 0 0 1-.102-1.494L2.75 18h12.5-12.5Zm0-6.5h18.5a.75.75 0 0 1 .102 1.493L21.25 13H2.75a.75.75 0 0 1-.102-1.493l.102-.007h18.5-18.5Zm0-6.497h15.5a.75.75 0 0 1 .102 1.493l-.102.007H2.75a.75.75 0 0 1-.102-1.493l.102-.007h15.5-15.5Z", "location-outline": "M5.843 4.568a8.707 8.707 0 1 1 12.314 12.314l-1.187 1.174c-.875.858-2.01 1.962-3.406 3.312a2.25 2.25 0 0 1-3.128 0l-3.491-3.396c-.439-.431-.806-.794-1.102-1.09a8.707 8.707 0 0 1 0-12.314Zm11.253 1.06A7.207 7.207 0 1 0 6.904 15.822L8.39 17.29a753.98 753.98 0 0 0 3.088 3 .75.75 0 0 0 1.043 0l3.394-3.3c.47-.461.863-.85 1.18-1.168a7.207 7.207 0 0 0 0-10.192ZM12 7.999a3.002 3.002 0 1 1 0 6.004 3.002 3.002 0 0 1 0-6.003Zm0 1.5a1.501 1.501 0 1 0 0 3.004 1.501 1.501 0 0 0 0-3.003Z", "lock-closed-outline": "M12 2a4 4 0 0 1 4 4v2h1.75A2.25 2.25 0 0 1 20 10.25v9.5A2.25 2.25 0 0 1 17.75 22H6.25A2.25 2.25 0 0 1 4 19.75v-9.5A2.25 2.25 0 0 1 6.25 8H8V6a4 4 0 0 1 4-4Zm5.75 7.5H6.25a.75.75 0 0 0-.75.75v9.5c0 .414.336.75.75.75h11.5a.75.75 0 0 0 .75-.75v-9.5a.75.75 0 0 0-.75-.75Zm-5.75 4a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Zm0-10A2.5 2.5 0 0 0 9.5 6v2h5V6A2.5 2.5 0 0 0 12 3.5Z", + "lock-shield-outline": "M10 2a4 4 0 0 1 4 4v2h1.75A2.25 2.25 0 0 1 18 10.25V11c-.319 0-.637.11-.896.329l-.107.1c-.164.17-.33.323-.496.457L16.5 10.25a.75.75 0 0 0-.75-.75H4.25a.75.75 0 0 0-.75.75v9.5c0 .414.336.75.75.75h9.888a6.024 6.024 0 0 0 1.54 1.5H4.25A2.25 2.25 0 0 1 2 19.75v-9.5A2.25 2.25 0 0 1 4.25 8H6V6a4 4 0 0 1 4-4Zm8.284 10.122c.992 1.036 2.091 1.545 3.316 1.545.193 0 .355.143.392.332l.008.084v2.501c0 2.682-1.313 4.506-3.873 5.395a.385.385 0 0 1-.253 0c-2.476-.86-3.785-2.592-3.87-5.13L14 16.585v-2.5c0-.23.18-.417.4-.417 1.223 0 2.323-.51 3.318-1.545a.389.389 0 0 1 .566 0ZM10 13.5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Zm0-10A2.5 2.5 0 0 0 7.5 6v2h5V6A2.5 2.5 0 0 0 10 3.5Z", "mail-inbox-all-outline": "M6.25 3h11.5a3.25 3.25 0 0 1 3.245 3.066L21 6.25v11.5a3.25 3.25 0 0 1-3.066 3.245L17.75 21H6.25a3.25 3.25 0 0 1-3.245-3.066L3 17.75V6.25a3.25 3.25 0 0 1 3.066-3.245L6.25 3Zm2.075 11.5H4.5v3.25a1.75 1.75 0 0 0 1.606 1.744l.144.006h11.5a1.75 1.75 0 0 0 1.744-1.607l.006-.143V14.5h-3.825a3.752 3.752 0 0 1-3.475 2.995l-.2.005a3.752 3.752 0 0 1-3.632-2.812l-.043-.188Zm9.425-10H6.25a1.75 1.75 0 0 0-1.744 1.606L4.5 6.25V13H9a.75.75 0 0 1 .743.648l.007.102a2.25 2.25 0 0 0 4.495.154l.005-.154a.75.75 0 0 1 .648-.743L15 13h4.5V6.25a1.75 1.75 0 0 0-1.607-1.744L17.75 4.5Zm-11 5h10.5a.75.75 0 0 1 .102 1.493L17.25 11H6.75a.75.75 0 0 1-.102-1.493L6.75 9.5h10.5-10.5Zm0-3h10.5a.75.75 0 0 1 .102 1.493L17.25 8H6.75a.75.75 0 0 1-.102-1.493L6.75 6.5h10.5-10.5Z", "mail-unread-outline": "M16 6.5H5.25a1.75 1.75 0 0 0-1.744 1.606l-.004.1L11 12.153l6.03-3.174a3.489 3.489 0 0 0 2.97.985v6.786a3.25 3.25 0 0 1-3.066 3.245L16.75 20H5.25a3.25 3.25 0 0 1-3.245-3.066L2 16.75v-8.5a3.25 3.25 0 0 1 3.066-3.245L5.25 5h11.087A3.487 3.487 0 0 0 16 6.5Zm2.5 3.399-7.15 3.765a.75.75 0 0 1-.603.042l-.096-.042L3.5 9.9v6.85a1.75 1.75 0 0 0 1.606 1.744l.144.006h11.5a1.75 1.75 0 0 0 1.744-1.607l.006-.143V9.899ZM19.5 4a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5Z", "mail-outline": "M5.25 4h13.5a3.25 3.25 0 0 1 3.245 3.066L22 7.25v9.5a3.25 3.25 0 0 1-3.066 3.245L18.75 20H5.25a3.25 3.25 0 0 1-3.245-3.066L2 16.75v-9.5a3.25 3.25 0 0 1 3.066-3.245L5.25 4h13.5-13.5ZM20.5 9.373l-8.15 4.29a.75.75 0 0 1-.603.043l-.096-.042L3.5 9.374v7.376a1.75 1.75 0 0 0 1.606 1.744l.144.006h13.5a1.75 1.75 0 0 0 1.744-1.607l.006-.143V9.373ZM18.75 5.5H5.25a1.75 1.75 0 0 0-1.744 1.606L3.5 7.25v.429l8.5 4.473 8.5-4.474V7.25a1.75 1.75 0 0 0-1.607-1.744L18.75 5.5Z", @@ -117,6 +118,7 @@ "people-outline": "M4 13.999 13 14a2 2 0 0 1 1.995 1.85L15 16v1.5C14.999 21 11.284 22 8.5 22c-2.722 0-6.335-.956-6.495-4.27L2 17.5v-1.501c0-1.054.816-1.918 1.85-1.995L4 14ZM15.22 14H20c1.054 0 1.918.816 1.994 1.85L22 16v1c-.001 3.062-2.858 4-5 4a7.16 7.16 0 0 1-2.14-.322c.336-.386.607-.827.802-1.327A6.19 6.19 0 0 0 17 19.5l.267-.006c.985-.043 3.086-.363 3.226-2.289L20.5 17v-1a.501.501 0 0 0-.41-.492L20 15.5h-4.051a2.957 2.957 0 0 0-.595-1.34L15.22 14H20h-4.78ZM4 15.499l-.1.01a.51.51 0 0 0-.254.136.506.506 0 0 0-.136.253l-.01.101V17.5c0 1.009.45 1.722 1.417 2.242.826.445 2.003.714 3.266.753l.317.005.317-.005c1.263-.039 2.439-.308 3.266-.753.906-.488 1.359-1.145 1.412-2.057l.005-.186V16a.501.501 0 0 0-.41-.492L13 15.5l-9-.001ZM8.5 3a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9Zm9 2a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7Zm-9-.5c-1.654 0-3 1.346-3 3s1.346 3 3 3 3-1.346 3-3-1.346-3-3-3Zm9 2c-1.103 0-2 .897-2 2s.897 2 2 2 2-.897 2-2-.897-2-2-2Z", "people-team-add-outline": "M17.5 12a5.5 5.5 0 1 1 0 11a5.5 5.5 0 0 1 0-11Zm0 2l-.09.007a.5.5 0 0 0-.402.402L17 14.5V17h-2.502l-.09.008a.5.5 0 0 0-.402.402l-.008.09l.008.09a.5.5 0 0 0 .402.402l.09.008H17v2.503l.008.09a.5.5 0 0 0 .402.402l.09.008l.09-.008a.5.5 0 0 0 .402-.402l.008-.09V18l2.504.001l.09-.008a.5.5 0 0 0 .402-.402l.008-.09l-.008-.09a.5.5 0 0 0-.403-.402l-.09-.008H18v-2.5l-.008-.09a.5.5 0 0 0-.402-.403L17.5 14Zm-3.246-4c.835 0 1.563.454 1.951 1.13a6.44 6.44 0 0 0-1.518.509a.736.736 0 0 0-.433-.139H9.752a.75.75 0 0 0-.75.75v4.249c0 1.41.974 2.594 2.286 2.915a6.42 6.42 0 0 0 .735 1.587l-.02-.001a4.501 4.501 0 0 1-4.501-4.501V12.25A2.25 2.25 0 0 1 9.752 10h4.502Zm-6.848 0a3.243 3.243 0 0 0-.817 1.5H4.25a.75.75 0 0 0-.75.75v2.749a2.501 2.501 0 0 0 3.082 2.433c.085.504.24.985.453 1.432A4.001 4.001 0 0 1 2 14.999V12.25a2.25 2.25 0 0 1 2.096-2.245L4.25 10h3.156Zm12.344 0A2.25 2.25 0 0 1 22 12.25v.56A6.478 6.478 0 0 0 17.5 11l-.245.005A3.21 3.21 0 0 0 16.6 10h3.15ZM18.5 4a2.5 2.5 0 1 1 0 5a2.5 2.5 0 0 1 0-5ZM12 3a3 3 0 1 1 0 6a3 3 0 0 1 0-6ZM5.5 4a2.5 2.5 0 1 1 0 5a2.5 2.5 0 0 1 0-5Zm13 1.5a1 1 0 1 0 0 2a1 1 0 0 0 0-2Zm-6.5-1a1.5 1.5 0 1 0 0 3a1.5 1.5 0 0 0 0-3Zm-6.5 1a1 1 0 1 0 0 2a1 1 0 0 0 0-2Z", "people-team-outline": "M14.754 10c.966 0 1.75.784 1.75 1.75v4.749a4.501 4.501 0 0 1-9.002 0V11.75c0-.966.783-1.75 1.75-1.75h5.502Zm0 1.5H9.252a.25.25 0 0 0-.25.25v4.749a3.001 3.001 0 0 0 6.002 0V11.75a.25.25 0 0 0-.25-.25ZM3.75 10h3.381a2.738 2.738 0 0 0-.618 1.5H3.75a.25.25 0 0 0-.25.25v3.249a2.501 2.501 0 0 0 3.082 2.433c.085.504.24.985.453 1.432A4.001 4.001 0 0 1 2 14.999V11.75c0-.966.784-1.75 1.75-1.75Zm13.125 0h3.375c.966 0 1.75.784 1.75 1.75V15a4 4 0 0 1-5.03 3.866c.214-.448.369-.929.455-1.433A2.5 2.5 0 0 0 20.5 15v-3.25a.25.25 0 0 0-.25-.25h-2.757a2.738 2.738 0 0 0-.618-1.5ZM12 3a3 3 0 1 1 0 6 3 3 0 0 1 0-6Zm6.5 1a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5Zm-13 0a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5Zm6.5.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Zm6.5 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm-13 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z", + "person-account-outline": "M11 15c0-.35.06-.687.17-1H4.253a2.249 2.249 0 0 0-2.249 2.249v.578c0 .892.319 1.756.899 2.435 1.566 1.834 3.952 2.74 7.098 2.74.397 0 .783-.015 1.156-.044A2.998 2.998 0 0 1 11 21v-.535c-.321.024-.655.036-1 .036-2.738 0-4.704-.746-5.958-2.213a2.25 2.25 0 0 1-.539-1.462v-.577c0-.414.336-.75.75-.75H11V15ZM10 2.005a5 5 0 1 1 0 10 5 5 0 0 1 0-10Zm0 1.5a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7ZM12 15a2 2 0 0 1 2-2h7a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2v-6Zm2.5 1a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1h-6Zm0 3a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1h-6Z", "person-add-outline": "M17.5 12a5.5 5.5 0 1 1 0 11a5.5 5.5 0 0 1 0-11zm-5.477 2a6.47 6.47 0 0 0-.709 1.5H4.253a.749.749 0 0 0-.75.75v.577c0 .535.192 1.053.54 1.46c1.253 1.469 3.22 2.214 5.957 2.214c.597 0 1.157-.035 1.68-.106c.246.495.553.954.912 1.367c-.795.16-1.66.24-2.592.24c-3.146 0-5.532-.906-7.098-2.74a3.75 3.75 0 0 1-.898-2.435v-.578A2.249 2.249 0 0 1 4.253 14h7.77zm5.477 0l-.09.008a.5.5 0 0 0-.402.402L17 14.5V17h-2.496l-.09.008a.5.5 0 0 0-.402.402l-.008.09l.008.09a.5.5 0 0 0 .402.402l.09.008H17L17 20.5l.008.09a.5.5 0 0 0 .402.402l.09.008l.09-.008a.5.5 0 0 0 .402-.402L18 20.5V18h2.504l.09-.008a.5.5 0 0 0 .402-.402l.008-.09l-.008-.09a.5.5 0 0 0-.402-.402l-.09-.008H18L18 14.5l-.008-.09a.5.5 0 0 0-.402-.402L17.5 14zM10 2.005a5 5 0 1 1 0 10a5 5 0 0 1 0-10zm0 1.5a3.5 3.5 0 1 0 0 7a3.5 3.5 0 0 0 0-7z", "person-assign-outline": "M11.313 15.5a6.471 6.471 0 0 1 .709-1.5h-7.77a2.249 2.249 0 0 0-2.249 2.25v.577c0 .892.319 1.756.899 2.435c1.566 1.834 3.952 2.74 7.098 2.74c.931 0 1.796-.08 2.592-.24a6.51 6.51 0 0 1-.913-1.366c-.524.07-1.083.105-1.68.105c-2.737 0-4.703-.745-5.957-2.213a2.25 2.25 0 0 1-.539-1.461v-.578a.75.75 0 0 1 .75-.749h7.06ZM10 2.005a5 5 0 1 1 0 10a5 5 0 0 1 0-10Zm0 1.5a3.5 3.5 0 1 0 0 7a3.5 3.5 0 0 0 0-7ZM23 17.5a5.5 5.5 0 1 1-11 0a5.5 5.5 0 0 1 11 0Zm-4.647-2.853a.5.5 0 0 0-.707.707L19.293 17H15a.5.5 0 1 0 0 1h4.293l-1.647 1.647a.5.5 0 0 0 .707.707l2.5-2.5a.497.497 0 0 0 .147-.345V17.5a.498.498 0 0 0-.15-.357l-2.497-2.496Z", "person-outline": "M17.754 14a2.249 2.249 0 0 1 2.25 2.249v.575c0 .894-.32 1.76-.902 2.438-1.57 1.834-3.957 2.739-7.102 2.739-3.146 0-5.532-.905-7.098-2.74a3.75 3.75 0 0 1-.898-2.435v-.577a2.249 2.249 0 0 1 2.249-2.25h11.501Zm0 1.5H6.253a.749.749 0 0 0-.75.749v.577c0 .536.192 1.054.54 1.461 1.253 1.468 3.219 2.214 5.957 2.214s4.706-.746 5.962-2.214a2.25 2.25 0 0 0 .541-1.463v-.575a.749.749 0 0 0-.749-.75ZM12 2.004a5 5 0 1 1 0 10 5 5 0 0 1 0-10Zm0 1.5a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7Z", diff --git a/app/views/installation/onboarding/index.html.erb b/app/views/installation/onboarding/index.html.erb index b58a4ee41..aef0a52f8 100644 --- a/app/views/installation/onboarding/index.html.erb +++ b/app/views/installation/onboarding/index.html.erb @@ -31,7 +31,7 @@