ui-soxo-bootstrap-core 2.6.40-dev.1 → 2.6.40-dev.11
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.
- package/.babelrc +8 -8
- package/.github/workflows/npm-publish.yml +5 -4
- package/.husky/pre-commit +11 -11
- package/.prettierrc.json +10 -10
- package/DEVELOPER_GUIDE.md +323 -323
- package/babel.config.js +2 -2
- package/core/components/component-loader/component-loader.js +125 -125
- package/core/components/component-wrapper/component-wrapper.js +121 -121
- package/core/components/external-window/DEVELOPER_GUIDE.md +705 -705
- package/core/components/external-window/external-window.js +236 -236
- package/core/components/external-window/external-window.test.js +80 -80
- package/core/components/extra-info/extra-info-details.js +155 -155
- package/core/components/extra-info/extra-info-details.scss +26 -26
- package/core/components/extra-info/extra-info.js +134 -134
- package/core/components/index.js +12 -12
- package/core/components/landing-api/landing-api.js +707 -707
- package/core/components/landing-api/landing-api.scss +41 -41
- package/core/components/license-management/license-alert.js +97 -97
- package/core/components/menu-template-api/menu-template-api.js +321 -321
- package/core/components/root-application-api/root-application-api.js +174 -174
- package/core/index.js +13 -13
- package/core/lib/Store.js +369 -369
- package/core/lib/components/application-bootstrap/application-bootstrap.js +115 -115
- package/core/lib/components/approval-form/approval-form.js +280 -280
- package/core/lib/components/approval-form/approval-form.scss +183 -183
- package/core/lib/components/approval-list/approval-list.js +143 -143
- package/core/lib/components/approval-list/approval-list.scss +2 -2
- package/core/lib/components/approval-list/components/request-card/request-card.js +42 -42
- package/core/lib/components/approval-list/components/request-card/request-card.scss +30 -30
- package/core/lib/components/camera/camera.js +230 -230
- package/core/lib/components/camera/camera.scss +86 -86
- package/core/lib/components/comment-block/comment-block.js +138 -138
- package/core/lib/components/comment-block/comment-block.scss +3 -3
- package/core/lib/components/confirm-modal/confirm-modal.js +82 -82
- package/core/lib/components/confirm-modal/confirm-modal.scss +2 -2
- package/core/lib/components/consent/consent.js +67 -67
- package/core/lib/components/consent/pdf-signature.js +299 -299
- package/core/lib/components/consent/signature-pad.js +90 -90
- package/core/lib/components/consent/signature-pad.scss +14 -14
- package/core/lib/components/file-upload/file-upload.js +133 -133
- package/core/lib/components/finger-print-reader/finger-print-reader.js +295 -295
- package/core/lib/components/finger-print-reader/finger-print-reader.scss +47 -47
- package/core/lib/components/finger-print-search/finger-print-search.js +200 -200
- package/core/lib/components/finger-print-search/finger-print-search.scss +47 -47
- package/core/lib/components/global-header/animations.js +18 -18
- package/core/lib/components/global-header/global-header.js +286 -286
- package/core/lib/components/global-header/global-header.scss +397 -397
- package/core/lib/components/header/generic-header.js +76 -76
- package/core/lib/components/header/generic-header.scss +99 -99
- package/core/lib/components/image-preview/image-preview.js +33 -33
- package/core/lib/components/image-wrapper/image-wrapper.js +108 -108
- package/core/lib/components/image-wrapper/image-wrapper.scss +12 -12
- package/core/lib/components/index.js +206 -206
- package/core/lib/components/landing/landing.js +403 -403
- package/core/lib/components/language-switcher/language-switcher.js +49 -49
- package/core/lib/components/menu-context/menu-context.js +69 -69
- package/core/lib/components/menu-template/menu-template.js +249 -249
- package/core/lib/components/menu-template/menu-template.scss +9 -9
- package/core/lib/components/modal-search/modal-search.js +153 -153
- package/core/lib/components/modal-search/modal-search.scss +78 -78
- package/core/lib/components/modal-wrapper/modal-manager.js +15 -15
- package/core/lib/components/modal-wrapper/modal-wrapper.js +108 -108
- package/core/lib/components/modal-wrapper/modal-wrapper.scss +13 -13
- package/core/lib/components/notice-board/notice-board.js +132 -132
- package/core/lib/components/notice-board/notice-board.scss +65 -65
- package/core/lib/components/page-container/page-container.js +55 -55
- package/core/lib/components/page-container/page-container.scss +8 -8
- package/core/lib/components/page-header/page-header.js +23 -23
- package/core/lib/components/page-header/page-header.scss +17 -17
- package/core/lib/components/pdf-viewer/pdf-viewer.js +56 -56
- package/core/lib/components/portlet-table/components/table-actions/table-actions.js +58 -58
- package/core/lib/components/portlet-table/components/table-actions/table-actions.scss +1 -1
- package/core/lib/components/portlet-table/components/table-data/table-data.js +106 -106
- package/core/lib/components/portlet-table/portlet-table.js +63 -63
- package/core/lib/components/portlet-table/portlet-table.scss +90 -90
- package/core/lib/components/progress-bar/progress-bar.js +58 -58
- package/core/lib/components/progress-bar/progress-bar.scss +15 -15
- package/core/lib/components/request-form/request-form.js +110 -110
- package/core/lib/components/root-application/root-application.js +70 -70
- package/core/lib/components/rupee/rupee.js +14 -14
- package/core/lib/components/script-input/script-input.js +169 -169
- package/core/lib/components/script-input/script-input.scss +8 -8
- package/core/lib/components/sidemenu/animations.js +51 -51
- package/core/lib/components/sidemenu/sidemenu.js +713 -713
- package/core/lib/components/sidemenu/sidemenu.scss +314 -314
- package/core/lib/components/spotlight-search/spotlight-search.component.js +635 -635
- package/core/lib/components/spotlight-search/spotlight-search.component.scss +78 -78
- package/core/lib/components/table-wrapper/table-wrapper.js +135 -135
- package/core/lib/components/table-wrapper/table-wrapper.scss +72 -72
- package/core/lib/components/ui_elements/Loader.js +12 -12
- package/core/lib/components/ui_elements/Notify.js +12 -12
- package/core/lib/components/ui_elements/PlaceHolder.js +33 -33
- package/core/lib/components/web-camera/web-camera.js +161 -161
- package/core/lib/components/web-camera/web-camera.scss +28 -28
- package/core/lib/core.md +9 -9
- package/core/lib/elements/Elements.md +2 -2
- package/core/lib/elements/basic/LoggedUserRedirect.js +21 -21
- package/core/lib/elements/basic/PrivateRoute.js +16 -16
- package/core/lib/elements/basic/button/Button.md +43 -43
- package/core/lib/elements/basic/button/button.js +170 -170
- package/core/lib/elements/basic/card/Card.md +15 -15
- package/core/lib/elements/basic/card/card.js +40 -40
- package/core/lib/elements/basic/card/card.scss +13 -13
- package/core/lib/elements/basic/checkbox/checkbox.js +23 -23
- package/core/lib/elements/basic/col/col.js +15 -15
- package/core/lib/elements/basic/copy-to-clipboard/Readme.md +40 -40
- package/core/lib/elements/basic/copy-to-clipboard/copy-to-clipboard.js +61 -61
- package/core/lib/elements/basic/country-phone-input/Readme.md +98 -98
- package/core/lib/elements/basic/country-phone-input/country-phone-input.js +81 -81
- package/core/lib/elements/basic/country-phone-input/phone-input.scss +75 -75
- package/core/lib/elements/basic/datepicker/datepicker.js +33 -33
- package/core/lib/elements/basic/dragabble-wrapper/draggable-wrapper.js +203 -203
- package/core/lib/elements/basic/empty/empty.js +14 -14
- package/core/lib/elements/basic/fingerprint-protrected/fingerprint-protected.js +118 -118
- package/core/lib/elements/basic/fingerprint-protrected/fingerprint-protected.scss +10 -10
- package/core/lib/elements/basic/form/form.js +70 -70
- package/core/lib/elements/basic/form/form.scss +3 -3
- package/core/lib/elements/basic/image/image.js +45 -45
- package/core/lib/elements/basic/image/image.scss +17 -17
- package/core/lib/elements/basic/image/readme.md +26 -26
- package/core/lib/elements/basic/image-viewer/image-viewer.js +108 -108
- package/core/lib/elements/basic/image-viewer/image-viewer.scss +7 -7
- package/core/lib/elements/basic/input/input.js +81 -81
- package/core/lib/elements/basic/input/readme.md +77 -77
- package/core/lib/elements/basic/json-input/json-input.js +51 -51
- package/core/lib/elements/basic/menu-dashboard/menu-dashboard.js +216 -216
- package/core/lib/elements/basic/menu-dashboard/menu-dashboard.scss +28 -28
- package/core/lib/elements/basic/menu-tree/menu-tree.js +127 -127
- package/core/lib/elements/basic/modal/modal.js +64 -64
- package/core/lib/elements/basic/modal/readme.md +62 -62
- package/core/lib/elements/basic/popconfirm/popconfirm.js +17 -17
- package/core/lib/elements/basic/popover/popover.js +12 -12
- package/core/lib/elements/basic/radio/radio.js +18 -18
- package/core/lib/elements/basic/rangepicker/rangepicker.js +141 -141
- package/core/lib/elements/basic/rangepicker/rangepicker.scss +24 -24
- package/core/lib/elements/basic/rangepicker/readme.md +81 -81
- package/core/lib/elements/basic/reference-select/readme.md +18 -18
- package/core/lib/elements/basic/reference-select/reference-select.js +337 -337
- package/core/lib/elements/basic/row/row.js +15 -15
- package/core/lib/elements/basic/select/select.js +46 -46
- package/core/lib/elements/basic/select-box/readme.md +52 -52
- package/core/lib/elements/basic/select-box/select-box.js +63 -63
- package/core/lib/elements/basic/skeleton/readme.md +35 -35
- package/core/lib/elements/basic/skeleton/skeleton.js +35 -35
- package/core/lib/elements/basic/skeleton/skeleton.scss +53 -53
- package/core/lib/elements/basic/space/space.js +12 -12
- package/core/lib/elements/basic/switch/readme.md +29 -29
- package/core/lib/elements/basic/switch/switch.js +67 -67
- package/core/lib/elements/basic/tab/tab.js +14 -14
- package/core/lib/elements/basic/table/readme.md +8 -8
- package/core/lib/elements/basic/table/table.js +95 -95
- package/core/lib/elements/basic/tag/tag.js +63 -63
- package/core/lib/elements/basic/tag/tag.scss +2 -2
- package/core/lib/elements/basic/timeline/timeline.js +13 -13
- package/core/lib/elements/basic/title/readme.md +20 -20
- package/core/lib/elements/basic/title/title.js +37 -37
- package/core/lib/elements/basic/user-search/user-search.js +192 -192
- package/core/lib/elements/complex/barcode/barcode.js +27 -27
- package/core/lib/elements/complex/bargraph/bar-graph.js +262 -262
- package/core/lib/elements/complex/basic-table/basic-table.js +110 -110
- package/core/lib/elements/complex/basic-table/basic-table.scss +4 -4
- package/core/lib/elements/complex/date-display/date-display.js +37 -37
- package/core/lib/elements/complex/error-boundary/error-boundary.js +29 -29
- package/core/lib/elements/complex/google-location-input/map-container-library-load.js +92 -92
- package/core/lib/elements/complex/google-map/google-map.js +230 -230
- package/core/lib/elements/complex/google-map/google-map.scss +13 -13
- package/core/lib/elements/complex/line-graph/line-graph.js +108 -108
- package/core/lib/elements/complex/location-search-input/location-search-input.js +100 -100
- package/core/lib/elements/complex/pie-chart/pie-chart.js +202 -202
- package/core/lib/elements/complex/qr-code/qr-code.js +27 -27
- package/core/lib/elements/complex/qrscanner/qrscanner.js +57 -57
- package/core/lib/elements/complex/search-debounce/search-debounce.js +37 -37
- package/core/lib/elements/complex/statistic-card/dashboard-statistic-card.js +75 -75
- package/core/lib/elements/complex/statistic-card/statistic-card.js +28 -28
- package/core/lib/elements/index.js +226 -226
- package/core/lib/hooks/device-detect.js +25 -25
- package/core/lib/hooks/index.js +9 -9
- package/core/lib/hooks/use-location.js +33 -33
- package/core/lib/hooks/use-otp-timer.js +80 -80
- package/core/lib/hooks/use-window-size.js +34 -34
- package/core/lib/i18n.js +69 -69
- package/core/lib/index.js +106 -106
- package/core/lib/introduction.md +73 -73
- package/core/lib/js-styleguide.md +4112 -4112
- package/core/lib/models/actions/actions.js +127 -127
- package/core/lib/models/actions/components/action-detail/action-detail.js +190 -190
- package/core/lib/models/actions/components/custom-actions/custom-actions.js +185 -185
- package/core/lib/models/attachments/attachments.js +231 -231
- package/core/lib/models/base-loader.js +99 -99
- package/core/lib/models/base.js +716 -716
- package/core/lib/models/branches/branches.js +125 -125
- package/core/lib/models/checklists/checklists.js +114 -114
- package/core/lib/models/columns/columns.js +169 -169
- package/core/lib/models/columns/components/columns-add/columns-add.js +171 -171
- package/core/lib/models/comments/comments.js +213 -213
- package/core/lib/models/departments/departments.js +107 -107
- package/core/lib/models/financial-years/financial_years.js +127 -127
- package/core/lib/models/forms/components/form-creator/form-creator.js +665 -665
- package/core/lib/models/forms/components/form-creator/form-creator.scss +39 -39
- package/core/lib/models/forms/components/form-detail/form-detail.js +224 -224
- package/core/lib/models/forms/forms.js +121 -121
- package/core/lib/models/index.js +203 -203
- package/core/lib/models/invoice-numbers/invoice_numbers.js +204 -204
- package/core/lib/models/lookup-types/components/lookup-detail/lookup-detail.js +145 -145
- package/core/lib/models/lookup-types/lookup-types.js +113 -113
- package/core/lib/models/lookup-values/components/lookup-values-add/lookup-values-add.js +126 -126
- package/core/lib/models/lookup-values/lookup-values.js +107 -107
- package/core/lib/models/menu-roles/menu-roles.js +127 -127
- package/core/lib/models/menus/components/menu-add/menu-add.js +228 -228
- package/core/lib/models/menus/components/menu-detail/menu-detail.js +170 -170
- package/core/lib/models/menus/components/menu-list/menu-list.js +550 -550
- package/core/lib/models/menus/components/menu-list/menu-list.scss +5 -5
- package/core/lib/models/menus/components/menu-roles-add/menu-roles-add.js +183 -183
- package/core/lib/models/menus/menus.js +499 -499
- package/core/lib/models/models/components/model-detail/model-detail.js +137 -137
- package/core/lib/models/models/components/models.js +128 -128
- package/core/lib/models/modules/modules.js +204 -204
- package/core/lib/models/outbox/outbox.js +73 -73
- package/core/lib/models/pages/pages.js +107 -107
- package/core/lib/models/permissions/permissions.js +71 -71
- package/core/lib/models/process/components/process-add/process-add.js +181 -181
- package/core/lib/models/process/components/process-dashboard/process-dashboard.js +1068 -1068
- package/core/lib/models/process/components/process-dashboard/process-dashboard.scss +66 -66
- package/core/lib/models/process/components/process-detail/process-detail.js +140 -140
- package/core/lib/models/process/components/process-timeline/process-timeline.js +139 -139
- package/core/lib/models/process/components/task-detail/task-detail.js +240 -240
- package/core/lib/models/process/components/task-detail/task-detail.scss +27 -27
- package/core/lib/models/process/components/task-form/task-form.js +528 -528
- package/core/lib/models/process/components/task-form/task-form.scss +7 -7
- package/core/lib/models/process/components/task-list/task-list.js +221 -221
- package/core/lib/models/process/components/task-list/task-list.scss +14 -14
- package/core/lib/models/process/components/task-overview/task-overview.js +299 -299
- package/core/lib/models/process/components/task-overview-legacy/task-overview-legacy.js +192 -192
- package/core/lib/models/process/components/task-routes/task-routes.js +45 -45
- package/core/lib/models/process/components/task-status/task-status.js +175 -175
- package/core/lib/models/process/components/task-status/task-status.scss +11 -11
- package/core/lib/models/process/process.js +780 -780
- package/core/lib/models/process-transactions/process-transactions.js +123 -123
- package/core/lib/models/roles/roles.js +106 -106
- package/core/lib/models/scripts/scripts.js +111 -111
- package/core/lib/models/step-transactions/step-transcations.js +147 -147
- package/core/lib/models/steps/components/step-add/step-add.js +261 -261
- package/core/lib/models/steps/components/step-detail/step-detail.js +157 -157
- package/core/lib/models/steps/steps.js +356 -356
- package/core/lib/models/user-preferences/user-preferences.js +83 -83
- package/core/lib/models/users/components/user-add/user-add.js +226 -226
- package/core/lib/models/users/users.js +119 -119
- package/core/lib/modules/business/launch-page/launch-page.js +29 -29
- package/core/lib/modules/business/launch-page/launch-page.scss +5 -5
- package/core/lib/modules/business/slots/slots.js +231 -231
- package/core/lib/modules/business/slots/slots.scss +108 -108
- package/core/lib/modules/forms/components/field-customizer/field-customizer.js +138 -138
- package/core/lib/modules/forms/components/field-selector/field-selector.js +157 -157
- package/core/lib/modules/forms/components/field-selector/field-selector.scss +25 -25
- package/core/lib/modules/forms/components/form-display/form-display.js +203 -203
- package/core/lib/modules/forms/components/form-display/form-display.scss +9 -9
- package/core/lib/modules/forms/components/tab-customizer/tab-customizer.js +124 -124
- package/core/lib/modules/generic/generic-add/generic-add.js +213 -213
- package/core/lib/modules/generic/generic-detail/generic-detail.js +199 -199
- package/core/lib/modules/generic/generic-edit/generic-edit.js +120 -120
- package/core/lib/modules/generic/generic-list/ExportReactCSV.js +414 -414
- package/core/lib/modules/generic/generic-list/generic-list.js +705 -705
- package/core/lib/modules/generic/generic-list/generic-list.scss +68 -68
- package/core/lib/modules/generic/generic-upload/generic-upload.js +483 -483
- package/core/lib/modules/generic/table-settings/table-settings.js +226 -226
- package/core/lib/modules/generic/table-settings/table-settings.scss +37 -37
- package/core/lib/modules/index.js +52 -52
- package/core/lib/modules/modules-routes/module-routes.js +35 -35
- package/core/lib/pages/change-password/change-password.js +204 -204
- package/core/lib/pages/change-password/change-password.scss +73 -73
- package/core/lib/pages/homepage/homepage.js +53 -53
- package/core/lib/pages/index.js +19 -19
- package/core/lib/pages/login/commnication-mode-selection.js +46 -46
- package/core/lib/pages/login/communication-mode-selection.scss +60 -60
- package/core/lib/pages/login/login.js +872 -872
- package/core/lib/pages/login/login.scss +353 -353
- package/core/lib/pages/login/reset-password.js +124 -124
- package/core/lib/pages/login/reset-password.scss +31 -31
- package/core/lib/pages/manage-users/manage-users.js +429 -429
- package/core/lib/pages/manage-users/manage-users.scss +25 -25
- package/core/lib/pages/profile/profile.js +247 -247
- package/core/lib/pages/profile/profile.scss +107 -107
- package/core/lib/pages/profile/theme-config.js +18 -18
- package/core/lib/pages/profile/themes-backup.json +310 -310
- package/core/lib/pages/profile/themes.json +254 -254
- package/core/lib/pages/register/register.js +176 -176
- package/core/lib/pages/register/register.scss +128 -128
- package/core/lib/react-styleguide.md +756 -756
- package/core/lib/utils/api/api.utils.js +207 -207
- package/core/lib/utils/api/readme.md +426 -426
- package/core/lib/utils/async.js +35 -35
- package/core/lib/utils/common/common.utils.js +237 -237
- package/core/lib/utils/common/readme.md +30 -30
- package/core/lib/utils/date/date.utils.js +295 -295
- package/core/lib/utils/date/readme.md +2 -2
- package/core/lib/utils/firebase.support.utils.js +98 -98
- package/core/lib/utils/firebase.utils.js +808 -808
- package/core/lib/utils/font-awesome.utils.js +168 -168
- package/core/lib/utils/form/form.utils.js +255 -255
- package/core/lib/utils/generic/generic.utils.js +70 -70
- package/core/lib/utils/http/auth.helper.js +95 -95
- package/core/lib/utils/http/http.utils.js +186 -186
- package/core/lib/utils/http/readme.md +14 -14
- package/core/lib/utils/index.js +43 -43
- package/core/lib/utils/location/location.utils.js +137 -137
- package/core/lib/utils/location/readme.md +18 -18
- package/core/lib/utils/modal.utils.js +15 -15
- package/core/lib/utils/notification.utils.js +34 -34
- package/core/lib/utils/pwa/pwa.utils.js +88 -88
- package/core/lib/utils/script.utils.js +235 -235
- package/core/lib/utils/setting.utils.js +68 -68
- package/core/lib/utils/upload.utils.js +29 -29
- package/core/models/Preference/Preferences.js +46 -46
- package/core/models/base/base.js +403 -403
- package/core/models/base-clone-loader.js +107 -107
- package/core/models/base-clone.js +187 -187
- package/core/models/base-loader.js +97 -97
- package/core/models/core-scripts/core-scripts.js +179 -179
- package/core/models/dashboard/dashboard.js +201 -201
- package/core/models/detail-loader.js +88 -88
- package/core/models/doctor/components/doctor-add/doctor-add.js +432 -432
- package/core/models/doctor/components/doctor-add/doctor-add.scss +32 -32
- package/core/models/groups.js +82 -82
- package/core/models/index.js +100 -100
- package/core/models/lookup-types/components/lookup-detail/lookup-detail.js +129 -129
- package/core/models/lookup-types/lookup-types.js +96 -96
- package/core/models/lookup-values/components/lookup-values-modal/lookup-values-modal.js +95 -95
- package/core/models/lookup-values/lookup-values.js +92 -92
- package/core/models/menu-roles/components/menu-roles-add/menu-roles-add.js +153 -153
- package/core/models/menu-roles/menu-roles.js +158 -158
- package/core/models/menus/components/menu-add/menu-add.js +288 -288
- package/core/models/menus/components/menu-add/menu-add.scss +31 -31
- package/core/models/menus/components/menu-detail/menu-detail.js +263 -263
- package/core/models/menus/components/menu-list/menu-list.js +392 -392
- package/core/models/menus/components/menu-lists/menu-lists.js +584 -584
- package/core/models/menus/components/menu-lists/menu-lists.scss +46 -46
- package/core/models/menus/menus.js +338 -338
- package/core/models/model-columns.js +121 -121
- package/core/models/models/components/model-detail/model-add.js +120 -120
- package/core/models/models/components/model-detail/model-detail.js +133 -133
- package/core/models/models/models.js +154 -154
- package/core/models/pages/components/page-add/page-add.js +163 -163
- package/core/models/pages/components/page-add/page-add.scss +30 -30
- package/core/models/pages/components/page-details/page-details.js +209 -209
- package/core/models/pages/components/page-list/page-list.js +248 -248
- package/core/models/pages/pages.js +142 -142
- package/core/models/pages.js +142 -142
- package/core/models/roles/components/role-add/menu-label.js +14 -14
- package/core/models/roles/components/role-add/menu-tree.js +127 -127
- package/core/models/roles/components/role-add/role-add.js +222 -222
- package/core/models/roles/components/role-add/role-add.scss +4 -4
- package/core/models/roles/components/role-list/role-list.js +406 -406
- package/core/models/roles/roles.js +196 -196
- package/core/models/staff/components/staff-add/staff-add.js +455 -455
- package/core/models/user-roles/components/user-roles-add/user-roles-add.js +149 -149
- package/core/models/user-roles/user-roles.js +113 -113
- package/core/models/users/components/assign-role/assign-role.js +428 -428
- package/core/models/users/components/assign-role/assign-role.scss +281 -281
- package/core/models/users/components/assign-role/avatar-props.js +45 -45
- package/core/models/users/components/user-add/user-add.js +847 -847
- package/core/models/users/components/user-add/user-edit.js +110 -110
- package/core/models/users/components/user-detail/user-detail.js +236 -236
- package/core/models/users/components/user-list/user-list.js +397 -397
- package/core/models/users/users.js +379 -379
- package/core/modules/Informations/change-info/change-info.js +618 -618
- package/core/modules/Informations/change-info/change-info.scss +134 -134
- package/core/modules/dashboard/components/dashboard-card/animations.js +64 -64
- package/core/modules/dashboard/components/dashboard-card/dashboard-card.js +197 -197
- package/core/modules/dashboard/components/dashboard-card/menu-dashboard-card.js +430 -430
- package/core/modules/dashboard/components/dashboard-card/menu-dashboard-card.scss +59 -59
- package/core/modules/dashboard/components/pop-query-dashboard/pop-query-dashboard.js +66 -66
- package/core/modules/generic/components/generic-add/generic-add.js +121 -121
- package/core/modules/generic/components/generic-add/generic-add.scss +13 -13
- package/core/modules/generic/components/generic-add-modal/generic-add-modal.js +125 -125
- package/core/modules/generic/components/generic-add-modal/generic-add-modal.scss +13 -13
- package/core/modules/generic/components/generic-detail/generic-detail.js +184 -184
- package/core/modules/generic/components/generic-detail/generic-detail.scss +25 -25
- package/core/modules/generic/components/generic-edit/generic-edit.js +123 -123
- package/core/modules/generic/components/generic-list/generic-list.js +335 -335
- package/core/modules/generic/components/generic-list/generic-list.scss +35 -35
- package/core/modules/index.js +42 -42
- package/core/modules/module-routes/module-routes.js +37 -37
- package/core/modules/reporting/components/index.js +6 -6
- package/core/modules/reporting/components/reporting-dashboard/README.md +316 -316
- package/core/modules/reporting/components/reporting-dashboard/adavance-search/advance-search.js +271 -271
- package/core/modules/reporting/components/reporting-dashboard/adavance-search/advance-search.scss +76 -76
- package/core/modules/reporting/components/reporting-dashboard/display-columns/build-display-columns.js +90 -90
- package/core/modules/reporting/components/reporting-dashboard/display-columns/build-display-columns.test.js +74 -74
- package/core/modules/reporting/components/reporting-dashboard/display-columns/display-cell-renderer.js +449 -449
- package/core/modules/reporting/components/reporting-dashboard/display-columns/display-cell-renderer.test.js +199 -199
- package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.js +1116 -1116
- package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.scss +215 -215
- package/core/modules/reporting/components/reporting-dashboard/reporting-table.js +519 -519
- package/core/modules/steps/action-buttons.js +92 -92
- package/core/modules/steps/action-buttons.scss +62 -62
- package/core/modules/steps/chat-assistant.js +141 -141
- package/core/modules/steps/narration.js +192 -192
- package/core/modules/steps/openai-realtime.js +275 -275
- package/core/modules/steps/progress-storage.js +140 -140
- package/core/modules/steps/readme.md +167 -167
- package/core/modules/steps/steps.js +1567 -1567
- package/core/modules/steps/steps.scss +907 -907
- package/core/modules/steps/timeline.js +56 -56
- package/core/modules/steps/voice-navigation.js +709 -709
- package/core/pages/homepage-api/homepage-api.js +106 -106
- package/core/pages/homepage-api/homepage-api.scss +233 -233
- package/core/pages/homepage-api/menu-dashboard.js +169 -169
- package/core/pages/homepage-api/menu-dashboard.scss +11 -11
- package/core/translation.json +53 -53
- package/core/translations.json +19 -19
- package/core/utils/script.utils.js +129 -129
- package/core/utils/settings.utils.js +25 -25
- package/eslint.config.mjs +79 -79
- package/index.js +35 -35
- package/jest.config.js +7 -7
- package/jest.setup.js +1 -1
- package/package.json +124 -124
- package/tsconfig.json +26 -26
- package/webpack.config.js +173 -173
|
@@ -1,192 +1,192 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Narration helpers for ProcessStepsPage.
|
|
3
|
-
*
|
|
4
|
-
* Owns the per-step "guest guide" copy plus the credential lookup, audio
|
|
5
|
-
* decoding, and seed-based content picking used by the TTS providers. The
|
|
6
|
-
* step component imports from here so that file can stay focused on
|
|
7
|
-
* component lifecycle and layout.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
const STEP_WELCOME_LINES = [
|
|
11
|
-
'Welcome to your AI Automated Consultation process.',
|
|
12
|
-
'You are in the right place for a smooth and guided health journey.',
|
|
13
|
-
'This experience is designed to keep your consultation easy and stress-free.',
|
|
14
|
-
];
|
|
15
|
-
|
|
16
|
-
const STEP_INTRO_LINES = [
|
|
17
|
-
'In this process, we will walk you through a seamless and friendly AI interaction experience.',
|
|
18
|
-
'Each step is simple, guided, and focused on helping you feel prepared.',
|
|
19
|
-
'We will guide you through each stage so you always know what happens next.',
|
|
20
|
-
];
|
|
21
|
-
|
|
22
|
-
const STEP_EXPECTATION_LINES = [
|
|
23
|
-
'A care specialist may ask quick clarification questions to ensure your details are accurate.',
|
|
24
|
-
'This step focuses on collecting clear inputs so the care team can support you faster.',
|
|
25
|
-
'You can expect a guided workflow with minimal waiting and clear instructions.',
|
|
26
|
-
'The goal in this step is to keep your consultation organized and easy to follow.',
|
|
27
|
-
];
|
|
28
|
-
|
|
29
|
-
const STEP_COMFORT_LINES = [
|
|
30
|
-
'Take your time. There is no rush and assistance is always available nearby.',
|
|
31
|
-
'If anything feels unclear, the next prompt will guide you before you continue.',
|
|
32
|
-
'You can pause and review information before moving to the next stage.',
|
|
33
|
-
'Your responses here help personalize the rest of your consultation flow.',
|
|
34
|
-
];
|
|
35
|
-
|
|
36
|
-
const STEP_TIP_LINES = [
|
|
37
|
-
'Tip: Keep your previous reports or test details ready for quicker progress.',
|
|
38
|
-
'Tip: Follow on-screen prompts one at a time for the smoothest experience.',
|
|
39
|
-
'Tip: If you are unsure about a question, answer what you know and continue.',
|
|
40
|
-
'Tip: Stay relaxed; this process is built to be simple and patient-friendly.',
|
|
41
|
-
];
|
|
42
|
-
|
|
43
|
-
function getFromStorage(storageKey) {
|
|
44
|
-
if (typeof window === 'undefined' || !window.localStorage) {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
try {
|
|
49
|
-
return window.localStorage.getItem(storageKey);
|
|
50
|
-
} catch (error) {
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export function getElevenLabsApiKey() {
|
|
56
|
-
return (
|
|
57
|
-
process.env.ELEVEN_LABS_KEY ||
|
|
58
|
-
process.env.ELEVENLABS_API_KEY ||
|
|
59
|
-
process.env.REACT_APP_ELEVEN_LABS_KEY ||
|
|
60
|
-
process.env.REACT_APP_ELEVENLABS_API_KEY ||
|
|
61
|
-
getFromStorage('eleven_labs_key') ||
|
|
62
|
-
getFromStorage('elevenlabs_api_key') ||
|
|
63
|
-
getFromStorage('ELEVEN_LABS_KEY') ||
|
|
64
|
-
getFromStorage('REACT_APP_ELEVEN_LABS_KEY') ||
|
|
65
|
-
getFromStorage('REACT_APP_ELEVENLABS_API_KEY')
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export function getGeminiApiKey() {
|
|
70
|
-
return (
|
|
71
|
-
process.env.GEMINI_API_KEY ||
|
|
72
|
-
process.env.REACT_APP_GEMINI_API_KEY ||
|
|
73
|
-
getFromStorage('gemini_api_key') ||
|
|
74
|
-
getFromStorage('GEMINI_API_KEY') ||
|
|
75
|
-
getFromStorage('REACT_APP_GEMINI_API_KEY')
|
|
76
|
-
);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export function getOpenAIApiKey() {
|
|
80
|
-
return (
|
|
81
|
-
process.env.OPEN_AI_KEY ||
|
|
82
|
-
process.env.OPENAI_API_KEY ||
|
|
83
|
-
process.env.REACT_APP_OPEN_AI_KEY ||
|
|
84
|
-
process.env.REACT_APP_OPENAI_API_KEY ||
|
|
85
|
-
getFromStorage('open_ai_key') ||
|
|
86
|
-
getFromStorage('openai_api_key') ||
|
|
87
|
-
getFromStorage('OPEN_AI_KEY') ||
|
|
88
|
-
getFromStorage('OPENAI_API_KEY') ||
|
|
89
|
-
getFromStorage('REACT_APP_OPEN_AI_KEY') ||
|
|
90
|
-
getFromStorage('REACT_APP_OPENAI_API_KEY')
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export function getSarvamApiKey() {
|
|
95
|
-
return (
|
|
96
|
-
process.env.SARVAM_API_KEY ||
|
|
97
|
-
process.env.REACT_APP_SARVAM_API_KEY ||
|
|
98
|
-
getFromStorage('sarvam_api_key') ||
|
|
99
|
-
getFromStorage('REACT_APP_SARVAM_API_KEY')
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export function base64AudioToBlob(base64Audio = '', mimeType = 'audio/wav') {
|
|
104
|
-
const cleanedBase64 = base64Audio.includes(',') ? base64Audio.split(',').pop() : base64Audio;
|
|
105
|
-
const binaryString = typeof window !== 'undefined' && window.atob ? window.atob(cleanedBase64) : atob(cleanedBase64);
|
|
106
|
-
const bytes = new Uint8Array(binaryString.length);
|
|
107
|
-
|
|
108
|
-
for (let index = 0; index < binaryString.length; index += 1) {
|
|
109
|
-
bytes[index] = binaryString.charCodeAt(index);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
return new Blob([bytes], { type: mimeType });
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export function extractGeminiAudio(payload) {
|
|
116
|
-
const candidates = payload && payload.candidates ? payload.candidates : [];
|
|
117
|
-
|
|
118
|
-
for (const candidate of candidates) {
|
|
119
|
-
const parts = candidate && candidate.content && candidate.content.parts ? candidate.content.parts : [];
|
|
120
|
-
|
|
121
|
-
for (const part of parts) {
|
|
122
|
-
const inlineData = part.inlineData || part.inline_data || part.audio;
|
|
123
|
-
|
|
124
|
-
if (inlineData && inlineData.data) {
|
|
125
|
-
return {
|
|
126
|
-
mimeType: inlineData.mimeType || inlineData.mime_type || 'audio/wav',
|
|
127
|
-
data: inlineData.data,
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
return null;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
function hashText(value = '') {
|
|
137
|
-
let hash = 0;
|
|
138
|
-
|
|
139
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
140
|
-
hash = (hash << 5) - hash + value.charCodeAt(index);
|
|
141
|
-
hash |= 0;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
return Math.abs(hash);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
function pickBySeed(items = [], seed = 0) {
|
|
148
|
-
if (!items.length) {
|
|
149
|
-
return '';
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
return items[seed % items.length];
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
export function buildGuestStepGuide(step, index, total) {
|
|
156
|
-
if (!step) {
|
|
157
|
-
return {
|
|
158
|
-
welcome: STEP_WELCOME_LINES[0],
|
|
159
|
-
intro: STEP_INTRO_LINES[0],
|
|
160
|
-
expectation: 'We are preparing your consultation journey.',
|
|
161
|
-
comfort: STEP_COMFORT_LINES[0],
|
|
162
|
-
tip: STEP_TIP_LINES[0],
|
|
163
|
-
narration: '',
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
const stepName = step.step_name || `Step ${index + 1}`;
|
|
168
|
-
const seedSource = `${step.step_id || step.id || index}-${stepName}`;
|
|
169
|
-
const seed = hashText(seedSource);
|
|
170
|
-
|
|
171
|
-
const welcome = index === 0 ? STEP_WELCOME_LINES[0] : `Now entering ${stepName}.`;
|
|
172
|
-
const intro = index === 0 ? STEP_INTRO_LINES[0] : pickBySeed(STEP_INTRO_LINES, seed + 1);
|
|
173
|
-
const expectation = step.step_description || pickBySeed(STEP_EXPECTATION_LINES, seed + 2);
|
|
174
|
-
const comfort = pickBySeed(STEP_COMFORT_LINES, seed + 3);
|
|
175
|
-
const tip = pickBySeed(STEP_TIP_LINES, seed + 4);
|
|
176
|
-
|
|
177
|
-
return {
|
|
178
|
-
welcome,
|
|
179
|
-
intro,
|
|
180
|
-
expectation,
|
|
181
|
-
comfort,
|
|
182
|
-
tip,
|
|
183
|
-
narration: [
|
|
184
|
-
`Step ${index + 1} of ${total}. ${stepName}.`,
|
|
185
|
-
welcome,
|
|
186
|
-
intro,
|
|
187
|
-
`What to expect: ${expectation}`,
|
|
188
|
-
`Comfort note: ${comfort}`,
|
|
189
|
-
`Helpful tip: ${tip}`,
|
|
190
|
-
].join(' '),
|
|
191
|
-
};
|
|
192
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Narration helpers for ProcessStepsPage.
|
|
3
|
+
*
|
|
4
|
+
* Owns the per-step "guest guide" copy plus the credential lookup, audio
|
|
5
|
+
* decoding, and seed-based content picking used by the TTS providers. The
|
|
6
|
+
* step component imports from here so that file can stay focused on
|
|
7
|
+
* component lifecycle and layout.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const STEP_WELCOME_LINES = [
|
|
11
|
+
'Welcome to your AI Automated Consultation process.',
|
|
12
|
+
'You are in the right place for a smooth and guided health journey.',
|
|
13
|
+
'This experience is designed to keep your consultation easy and stress-free.',
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
const STEP_INTRO_LINES = [
|
|
17
|
+
'In this process, we will walk you through a seamless and friendly AI interaction experience.',
|
|
18
|
+
'Each step is simple, guided, and focused on helping you feel prepared.',
|
|
19
|
+
'We will guide you through each stage so you always know what happens next.',
|
|
20
|
+
];
|
|
21
|
+
|
|
22
|
+
const STEP_EXPECTATION_LINES = [
|
|
23
|
+
'A care specialist may ask quick clarification questions to ensure your details are accurate.',
|
|
24
|
+
'This step focuses on collecting clear inputs so the care team can support you faster.',
|
|
25
|
+
'You can expect a guided workflow with minimal waiting and clear instructions.',
|
|
26
|
+
'The goal in this step is to keep your consultation organized and easy to follow.',
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
const STEP_COMFORT_LINES = [
|
|
30
|
+
'Take your time. There is no rush and assistance is always available nearby.',
|
|
31
|
+
'If anything feels unclear, the next prompt will guide you before you continue.',
|
|
32
|
+
'You can pause and review information before moving to the next stage.',
|
|
33
|
+
'Your responses here help personalize the rest of your consultation flow.',
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
const STEP_TIP_LINES = [
|
|
37
|
+
'Tip: Keep your previous reports or test details ready for quicker progress.',
|
|
38
|
+
'Tip: Follow on-screen prompts one at a time for the smoothest experience.',
|
|
39
|
+
'Tip: If you are unsure about a question, answer what you know and continue.',
|
|
40
|
+
'Tip: Stay relaxed; this process is built to be simple and patient-friendly.',
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
function getFromStorage(storageKey) {
|
|
44
|
+
if (typeof window === 'undefined' || !window.localStorage) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
try {
|
|
49
|
+
return window.localStorage.getItem(storageKey);
|
|
50
|
+
} catch (error) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function getElevenLabsApiKey() {
|
|
56
|
+
return (
|
|
57
|
+
process.env.ELEVEN_LABS_KEY ||
|
|
58
|
+
process.env.ELEVENLABS_API_KEY ||
|
|
59
|
+
process.env.REACT_APP_ELEVEN_LABS_KEY ||
|
|
60
|
+
process.env.REACT_APP_ELEVENLABS_API_KEY ||
|
|
61
|
+
getFromStorage('eleven_labs_key') ||
|
|
62
|
+
getFromStorage('elevenlabs_api_key') ||
|
|
63
|
+
getFromStorage('ELEVEN_LABS_KEY') ||
|
|
64
|
+
getFromStorage('REACT_APP_ELEVEN_LABS_KEY') ||
|
|
65
|
+
getFromStorage('REACT_APP_ELEVENLABS_API_KEY')
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function getGeminiApiKey() {
|
|
70
|
+
return (
|
|
71
|
+
process.env.GEMINI_API_KEY ||
|
|
72
|
+
process.env.REACT_APP_GEMINI_API_KEY ||
|
|
73
|
+
getFromStorage('gemini_api_key') ||
|
|
74
|
+
getFromStorage('GEMINI_API_KEY') ||
|
|
75
|
+
getFromStorage('REACT_APP_GEMINI_API_KEY')
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export function getOpenAIApiKey() {
|
|
80
|
+
return (
|
|
81
|
+
process.env.OPEN_AI_KEY ||
|
|
82
|
+
process.env.OPENAI_API_KEY ||
|
|
83
|
+
process.env.REACT_APP_OPEN_AI_KEY ||
|
|
84
|
+
process.env.REACT_APP_OPENAI_API_KEY ||
|
|
85
|
+
getFromStorage('open_ai_key') ||
|
|
86
|
+
getFromStorage('openai_api_key') ||
|
|
87
|
+
getFromStorage('OPEN_AI_KEY') ||
|
|
88
|
+
getFromStorage('OPENAI_API_KEY') ||
|
|
89
|
+
getFromStorage('REACT_APP_OPEN_AI_KEY') ||
|
|
90
|
+
getFromStorage('REACT_APP_OPENAI_API_KEY')
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export function getSarvamApiKey() {
|
|
95
|
+
return (
|
|
96
|
+
process.env.SARVAM_API_KEY ||
|
|
97
|
+
process.env.REACT_APP_SARVAM_API_KEY ||
|
|
98
|
+
getFromStorage('sarvam_api_key') ||
|
|
99
|
+
getFromStorage('REACT_APP_SARVAM_API_KEY')
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export function base64AudioToBlob(base64Audio = '', mimeType = 'audio/wav') {
|
|
104
|
+
const cleanedBase64 = base64Audio.includes(',') ? base64Audio.split(',').pop() : base64Audio;
|
|
105
|
+
const binaryString = typeof window !== 'undefined' && window.atob ? window.atob(cleanedBase64) : atob(cleanedBase64);
|
|
106
|
+
const bytes = new Uint8Array(binaryString.length);
|
|
107
|
+
|
|
108
|
+
for (let index = 0; index < binaryString.length; index += 1) {
|
|
109
|
+
bytes[index] = binaryString.charCodeAt(index);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return new Blob([bytes], { type: mimeType });
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export function extractGeminiAudio(payload) {
|
|
116
|
+
const candidates = payload && payload.candidates ? payload.candidates : [];
|
|
117
|
+
|
|
118
|
+
for (const candidate of candidates) {
|
|
119
|
+
const parts = candidate && candidate.content && candidate.content.parts ? candidate.content.parts : [];
|
|
120
|
+
|
|
121
|
+
for (const part of parts) {
|
|
122
|
+
const inlineData = part.inlineData || part.inline_data || part.audio;
|
|
123
|
+
|
|
124
|
+
if (inlineData && inlineData.data) {
|
|
125
|
+
return {
|
|
126
|
+
mimeType: inlineData.mimeType || inlineData.mime_type || 'audio/wav',
|
|
127
|
+
data: inlineData.data,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function hashText(value = '') {
|
|
137
|
+
let hash = 0;
|
|
138
|
+
|
|
139
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
140
|
+
hash = (hash << 5) - hash + value.charCodeAt(index);
|
|
141
|
+
hash |= 0;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return Math.abs(hash);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
function pickBySeed(items = [], seed = 0) {
|
|
148
|
+
if (!items.length) {
|
|
149
|
+
return '';
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return items[seed % items.length];
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export function buildGuestStepGuide(step, index, total) {
|
|
156
|
+
if (!step) {
|
|
157
|
+
return {
|
|
158
|
+
welcome: STEP_WELCOME_LINES[0],
|
|
159
|
+
intro: STEP_INTRO_LINES[0],
|
|
160
|
+
expectation: 'We are preparing your consultation journey.',
|
|
161
|
+
comfort: STEP_COMFORT_LINES[0],
|
|
162
|
+
tip: STEP_TIP_LINES[0],
|
|
163
|
+
narration: '',
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const stepName = step.step_name || `Step ${index + 1}`;
|
|
168
|
+
const seedSource = `${step.step_id || step.id || index}-${stepName}`;
|
|
169
|
+
const seed = hashText(seedSource);
|
|
170
|
+
|
|
171
|
+
const welcome = index === 0 ? STEP_WELCOME_LINES[0] : `Now entering ${stepName}.`;
|
|
172
|
+
const intro = index === 0 ? STEP_INTRO_LINES[0] : pickBySeed(STEP_INTRO_LINES, seed + 1);
|
|
173
|
+
const expectation = step.step_description || pickBySeed(STEP_EXPECTATION_LINES, seed + 2);
|
|
174
|
+
const comfort = pickBySeed(STEP_COMFORT_LINES, seed + 3);
|
|
175
|
+
const tip = pickBySeed(STEP_TIP_LINES, seed + 4);
|
|
176
|
+
|
|
177
|
+
return {
|
|
178
|
+
welcome,
|
|
179
|
+
intro,
|
|
180
|
+
expectation,
|
|
181
|
+
comfort,
|
|
182
|
+
tip,
|
|
183
|
+
narration: [
|
|
184
|
+
`Step ${index + 1} of ${total}. ${stepName}.`,
|
|
185
|
+
welcome,
|
|
186
|
+
intro,
|
|
187
|
+
`What to expect: ${expectation}`,
|
|
188
|
+
`Comfort note: ${comfort}`,
|
|
189
|
+
`Helpful tip: ${tip}`,
|
|
190
|
+
].join(' '),
|
|
191
|
+
};
|
|
192
|
+
}
|