@jokkoo/sdk-react 0.1.0
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/LICENSE +17 -0
- package/README.md +87 -0
- package/dist/index.css +846 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.mts +227 -0
- package/dist/index.d.ts +227 -0
- package/dist/index.js +2772 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2794 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/styles/tokens.css","../src/styles/panel.css","../src/styles/list.css","../src/styles/avatar.css","../src/styles/conversation.css"],"sourcesContent":[".jokkoo-widget {\n --jk-color-primary: #1c1c1c;\n --jk-color-background: #ffffff;\n --jk-color-surface: #f5f6f8;\n --jk-color-border: #e4e4e8;\n --jk-color-text: #1c1c1c;\n --jk-color-text-secondary: #8a8a9a;\n --jk-color-on-primary: #ffffff;\n --jk-color-user-bubble: #1c1c1c;\n --jk-color-agent-bubble: #f5f6f8;\n --jk-color-status-blue-bg: #dbeafe;\n --jk-color-status-blue-text: #3b82f6;\n --jk-color-status-green-bg: #d1fae5;\n --jk-color-status-green-text: #10b981;\n --jk-color-resolved-bg: rgba(76, 175, 80, 0.08);\n --jk-color-resolved-text: #4caf50;\n --jk-color-header: #1c1c1c;\n --jk-color-header-text: #ffffff;\n --jk-color-unread: #ef4444;\n --jk-font-family: \"Montserrat\", system-ui, -apple-system, sans-serif;\n --jk-radius-panel: 20px;\n --jk-radius-bubble: 20px;\n --jk-radius-card: 16px;\n --jk-radius-badge: 8px;\n --jk-radius-input: 16px;\n --jk-z-floating: 2147483000;\n --jk-z-panel: 2147483001;\n box-sizing: border-box;\n font-family: var(--jk-font-family);\n color: var(--jk-color-text);\n -webkit-font-smoothing: antialiased;\n}\n\n.jokkoo-widget *,\n.jokkoo-widget *::before,\n.jokkoo-widget *::after {\n box-sizing: border-box;\n}\n\n.jokkoo-widget button {\n font-family: inherit;\n cursor: pointer;\n border: none;\n background: none;\n padding: 0;\n}\n\n.jokkoo-widget button:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n.jokkoo-widget textarea {\n font-family: inherit;\n}\n",".jokkoo-widget .jk-floating-btn {\n position: fixed;\n z-index: var(--jk-z-floating);\n display: inline-flex;\n align-items: center;\n gap: 12px;\n padding: 4px 16px 4px 4px;\n border-radius: 9999px;\n background: var(--jk-color-primary);\n color: var(--jk-color-on-primary);\n box-shadow: 0 8px 24px rgba(28, 28, 28, 0.22);\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n}\n\n.jokkoo-widget .jk-floating-btn:hover {\n transform: translateY(-1px);\n box-shadow: 0 10px 28px rgba(28, 28, 28, 0.28);\n}\n\n.jokkoo-widget .jk-floating-btn--bottom-right {\n right: 24px;\n bottom: 24px;\n}\n\n.jokkoo-widget .jk-floating-btn--bottom-left {\n left: 24px;\n bottom: 24px;\n}\n\n.jokkoo-widget .jk-floating-btn__icon {\n width: 44px;\n height: 44px;\n border-radius: 22px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.15);\n flex-shrink: 0;\n}\n\n.jokkoo-widget .jk-floating-btn__label {\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n white-space: nowrap;\n padding-right: 4px;\n}\n\n.jokkoo-widget .jk-floating-btn__badge {\n position: absolute;\n top: -2px;\n right: -2px;\n min-width: 20px;\n height: 20px;\n border-radius: 10px;\n background: var(--jk-color-unread);\n color: #fff;\n font-size: 11px;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n border: 2px solid var(--jk-color-background);\n}\n\n.jokkoo-widget .jk-panel {\n position: fixed;\n z-index: var(--jk-z-panel);\n right: 24px;\n bottom: 24px;\n width: 393px;\n max-width: calc(100vw - 32px);\n height: min(700px, 90vh);\n background: var(--jk-color-background);\n border-radius: var(--jk-radius-panel);\n box-shadow: 0 16px 48px rgba(28, 28, 28, 0.2);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: jk-panel-enter 0.28s ease;\n}\n\n.jokkoo-widget .jk-panel--expanded {\n right: 0;\n bottom: 0;\n width: 100vw;\n max-width: 100vw;\n height: 100vh;\n border-radius: 0;\n}\n\n@keyframes jk-panel-enter {\n from {\n opacity: 0;\n transform: translateY(16px) scale(0.98);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n.jokkoo-widget .jk-panel-header {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 16px 0;\n flex-shrink: 0;\n}\n\n.jokkoo-widget .jk-panel-header--dark {\n background: var(--jk-color-header);\n padding-bottom: 12px;\n}\n\n.jokkoo-widget .jk-icon-btn {\n width: 32px;\n height: 32px;\n border-radius: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--jk-color-surface);\n color: var(--jk-color-text);\n transition: background 0.15s ease;\n}\n\n.jokkoo-widget .jk-icon-btn:hover {\n background: var(--jk-color-border);\n}\n\n.jokkoo-widget .jk-icon-btn--dark {\n background: var(--jk-color-header-button, #404040);\n color: var(--jk-color-header-text);\n}\n\n.jokkoo-widget .jk-icon-btn--dark:hover {\n background: #505050;\n}\n\n.jokkoo-widget .jk-panel-body {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n",".jokkoo-widget .jk-request-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--jk-color-background);\n}\n\n.jokkoo-widget .jk-request-list__header {\n padding: 8px 24px 0;\n flex-shrink: 0;\n}\n\n.jokkoo-widget .jk-request-list__title {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n letter-spacing: -1px;\n line-height: 1.2;\n color: var(--jk-color-text);\n}\n\n.jokkoo-widget .jk-request-list__subtitle {\n margin: 4px 0 0;\n font-size: 12px;\n color: var(--jk-color-text-secondary);\n line-height: 16px;\n}\n\n.jokkoo-widget .jk-request-list__section {\n margin: 24px 0 8px;\n font-size: 12px;\n color: var(--jk-color-text-secondary);\n line-height: 16px;\n}\n\n.jokkoo-widget .jk-request-list__items {\n flex: 1;\n overflow-y: auto;\n padding: 0 24px 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.jokkoo-widget .jk-request-list__footer {\n padding: 8px 24px 24px;\n display: flex;\n justify-content: flex-end;\n flex-shrink: 0;\n}\n\n.jokkoo-widget .jk-request-card {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 9px 16px;\n border: 1px solid var(--jk-color-border);\n border-radius: var(--jk-radius-card);\n background: var(--jk-color-background);\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.04);\n text-align: left;\n width: 100%;\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n}\n\n.jokkoo-widget .jk-request-card:hover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);\n}\n\n.jokkoo-widget .jk-request-card--unread {\n border-color: var(--jk-color-unread);\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.06);\n}\n\n.jokkoo-widget .jk-request-card__content {\n flex: 1;\n min-width: 0;\n}\n\n.jokkoo-widget .jk-request-card__row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.jokkoo-widget .jk-request-card__title {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n color: var(--jk-color-text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.jokkoo-widget .jk-request-card__preview {\n margin: 6px 0 0;\n font-size: 12px;\n line-height: 16px;\n color: var(--jk-color-text-secondary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.jokkoo-widget .jk-request-card__preview--unread {\n color: var(--jk-color-text);\n font-weight: 600;\n}\n\n.jokkoo-widget .jk-request-card__time {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-top: 8px;\n font-size: 12px;\n font-weight: 500;\n color: var(--jk-color-text-secondary);\n line-height: 16px;\n}\n\n.jokkoo-widget .jk-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding-top: 80px;\n gap: 8px;\n color: var(--jk-color-text-secondary);\n font-size: 12px;\n text-align: center;\n}\n\n.jokkoo-widget .jk-empty__retry {\n color: var(--jk-color-primary);\n font-size: 14px;\n font-weight: 600;\n}\n\n.jokkoo-widget .jk-spinner {\n width: 24px;\n height: 24px;\n border: 2px solid var(--jk-color-border);\n border-top-color: var(--jk-color-primary);\n border-radius: 50%;\n animation: jk-spin 0.7s linear infinite;\n}\n\n@keyframes jk-spin {\n to {\n transform: rotate(360deg);\n }\n}\n",".jokkoo-widget .jk-avatar {\n position: relative;\n flex-shrink: 0;\n}\n\n.jokkoo-widget .jk-avatar__circle {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n background: var(--jk-color-primary);\n color: var(--jk-color-on-primary);\n font-weight: 800;\n overflow: hidden;\n}\n\n.jokkoo-widget .jk-avatar__img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.jokkoo-widget .jk-avatar__unread {\n position: absolute;\n top: 0;\n right: 0;\n border-radius: 50%;\n background: var(--jk-color-unread);\n border: 2px solid var(--jk-color-background);\n}\n\n.jokkoo-widget .jk-status-badge {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n border-radius: var(--jk-radius-badge);\n font-size: 11px;\n font-weight: 600;\n line-height: 16px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.jokkoo-widget .jk-status-badge--new,\n.jokkoo-widget .jk-status-badge--in-progress {\n background: var(--jk-color-status-blue-bg);\n color: var(--jk-color-status-blue-text);\n}\n\n.jokkoo-widget .jk-status-badge--resolved,\n.jokkoo-widget .jk-status-badge--ended {\n background: var(--jk-color-status-green-bg);\n color: var(--jk-color-status-green-text);\n}\n",".jokkoo-widget .jk-conversation {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--jk-color-background);\n}\n\n.jokkoo-widget .jk-conversation-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px 16px;\n background: var(--jk-color-header);\n color: var(--jk-color-header-text);\n flex-shrink: 0;\n}\n\n.jokkoo-widget .jk-conversation-header__title {\n flex: 1;\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n line-height: 24px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.jokkoo-widget .jk-conversation-header .jk-status-badge {\n margin-left: auto;\n}\n\n.jokkoo-widget .jk-messages {\n flex: 1;\n overflow-y: auto;\n padding: 16px 20px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-height: 0;\n}\n\n.jokkoo-widget .jk-messages--new {\n justify-content: flex-end;\n}\n\n.jokkoo-widget .jk-bubble-row {\n display: flex;\n flex-direction: column;\n max-width: 78%;\n}\n\n.jokkoo-widget .jk-bubble-row--user {\n align-self: flex-end;\n align-items: flex-end;\n}\n\n.jokkoo-widget .jk-bubble-row--agent {\n align-self: flex-start;\n flex-direction: row;\n align-items: flex-start;\n gap: 8px;\n max-width: 100%;\n}\n\n.jokkoo-widget .jk-bubble-row__agent-body {\n display: flex;\n flex-direction: column;\n max-width: 78%;\n}\n\n.jokkoo-widget .jk-bubble-row__agent-name {\n font-size: 10.4px;\n font-weight: 600;\n color: var(--jk-color-text-secondary);\n margin-bottom: 4px;\n line-height: 16px;\n}\n\n.jokkoo-widget .jk-bubble {\n padding: 12px 16px;\n border-radius: var(--jk-radius-bubble);\n font-size: 12px;\n line-height: 16px;\n word-break: break-word;\n}\n\n.jokkoo-widget .jk-bubble--user {\n background: var(--jk-color-user-bubble);\n color: var(--jk-color-on-primary);\n border-bottom-right-radius: 4px;\n}\n\n.jokkoo-widget .jk-bubble--agent {\n background: var(--jk-color-agent-bubble);\n color: var(--jk-color-text);\n border-bottom-left-radius: 4px;\n}\n\n.jokkoo-widget .jk-bubble--welcome {\n background: transparent;\n padding: 0;\n font-size: 14px;\n line-height: 20px;\n color: var(--jk-color-text);\n}\n\n.jokkoo-widget .jk-bubble__time {\n margin-top: 3px;\n font-size: 10px;\n color: var(--jk-color-text-secondary);\n line-height: 15px;\n}\n\n.jokkoo-widget .jk-activity {\n align-self: stretch;\n text-align: center;\n padding: 8px 16px;\n color: var(--jk-color-text-secondary);\n font-size: 12px;\n line-height: 18px;\n}\n\n.jokkoo-widget .jk-activity__time {\n margin-top: 3px;\n font-size: 10px;\n opacity: 0.8;\n}\n\n.jokkoo-widget .jk-input-bar {\n border-top: 1px solid var(--jk-color-border);\n padding: 16px;\n background: var(--jk-color-background);\n flex-shrink: 0;\n}\n\n.jokkoo-widget .jk-input-shell {\n display: flex;\n align-items: flex-end;\n gap: 4px;\n border: 1px solid var(--jk-color-border);\n border-radius: var(--jk-radius-input);\n padding: 9px;\n min-height: 54px;\n}\n\n.jokkoo-widget .jk-input-shell__field {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.jokkoo-widget .jk-input-shell textarea {\n width: 100%;\n border: none;\n outline: none;\n resize: none;\n background: transparent;\n color: var(--jk-color-text);\n font-size: 13.6px;\n line-height: 18px;\n min-height: 36px;\n max-height: 120px;\n padding: 8px;\n}\n\n.jokkoo-widget .jk-input-shell__counter {\n font-size: 12px;\n color: var(--jk-color-text-secondary);\n text-align: right;\n padding: 0 8px;\n}\n\n.jokkoo-widget .jk-input-shell__counter--error {\n color: #ef4444;\n}\n\n.jokkoo-widget .jk-input-shell__icon {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--jk-color-text-secondary);\n flex-shrink: 0;\n}\n\n.jokkoo-widget .jk-resolved-banner {\n margin: 8px 16px 16px;\n padding: 16px;\n border: 1px solid var(--jk-color-border);\n border-radius: var(--jk-radius-card);\n background: var(--jk-color-resolved-bg);\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.jokkoo-widget .jk-resolved-banner__row {\n display: flex;\n align-items: center;\n gap: 10px;\n color: var(--jk-color-resolved-text);\n font-size: 12px;\n line-height: 18px;\n}\n\n.jokkoo-widget .jk-resolved-banner__icon {\n width: 28px;\n height: 28px;\n border-radius: 14px;\n background: var(--jk-color-status-green-bg);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.jokkoo-widget .jk-resolved-banner__cta {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n align-self: center;\n padding: 10px 16px;\n border: 1px solid var(--jk-color-border);\n border-radius: var(--jk-radius-badge);\n font-size: 12px;\n font-weight: 600;\n color: var(--jk-color-text);\n}\n\n.jokkoo-widget .jk-new-msg-indicator {\n position: absolute;\n right: 16px;\n width: 44px;\n height: 44px;\n border-radius: 22px;\n background: var(--jk-color-primary);\n color: var(--jk-color-on-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);\n z-index: 2;\n}\n\n.jokkoo-widget .jk-new-msg-indicator__badge {\n position: absolute;\n top: -2px;\n right: -2px;\n min-width: 20px;\n height: 20px;\n border-radius: 10px;\n background: var(--jk-color-unread);\n border: 2px solid var(--jk-color-background);\n color: #fff;\n font-size: 10px;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}\n\n.jokkoo-widget .jk-satisfaction {\n padding: 16px;\n}\n\n.jokkoo-widget .jk-satisfaction__card {\n border: 1px solid var(--jk-color-border);\n border-radius: var(--jk-radius-card);\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n text-align: center;\n}\n\n.jokkoo-widget .jk-satisfaction__title {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--jk-color-text);\n}\n\n.jokkoo-widget .jk-satisfaction__desc {\n margin: 0;\n font-size: 12px;\n color: var(--jk-color-text-secondary);\n}\n\n.jokkoo-widget .jk-satisfaction__row {\n display: flex;\n justify-content: space-between;\n margin-top: 4px;\n}\n\n.jokkoo-widget .jk-satisfaction__btn {\n flex: 1;\n font-size: 28px;\n line-height: 34px;\n padding: 8px 0;\n transition: transform 0.15s ease;\n}\n\n.jokkoo-widget .jk-satisfaction__btn--selected {\n transform: scale(1.1);\n}\n\n.jokkoo-widget .jk-pending-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n.jokkoo-widget .jk-pending-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px;\n border: 1px solid var(--jk-color-border);\n border-radius: var(--jk-radius-bubble);\n}\n\n.jokkoo-widget .jk-pending-item__thumb {\n width: 52px;\n height: 52px;\n border-radius: 12px;\n object-fit: cover;\n background: var(--jk-color-surface);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n overflow: hidden;\n}\n\n.jokkoo-widget .jk-pending-item__thumb img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.jokkoo-widget .jk-pending-item__details {\n flex: 1;\n min-width: 0;\n}\n\n.jokkoo-widget .jk-pending-item__name {\n font-size: 12px;\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.jokkoo-widget .jk-pending-item__status {\n font-size: 12px;\n margin-top: 2px;\n color: var(--jk-color-text-secondary);\n}\n\n.jokkoo-widget .jk-pending-item__status--error {\n color: #ef4444;\n}\n\n.jokkoo-widget .jk-pending-item__status--ready {\n color: var(--jk-color-primary);\n}\n\n.jokkoo-widget .jk-pending-item__progress {\n height: 4px;\n border-radius: 999px;\n background: var(--jk-color-border);\n margin-top: 6px;\n overflow: hidden;\n}\n\n.jokkoo-widget .jk-pending-item__progress-fill {\n height: 100%;\n background: var(--jk-color-primary);\n border-radius: 999px;\n}\n\n.jokkoo-widget .jk-pending-item__actions {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 8px;\n font-size: 12px;\n}\n\n.jokkoo-widget .jk-attachments {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-top: 8px;\n}\n\n.jokkoo-widget .jk-attachments__img {\n width: 180px;\n height: 140px;\n border-radius: var(--jk-radius-bubble);\n object-fit: cover;\n}\n\n.jokkoo-widget .jk-attachments__doc {\n border: 1px solid var(--jk-color-border);\n border-radius: var(--jk-radius-bubble);\n padding: 10px 12px;\n max-width: 220px;\n background: var(--jk-color-background);\n text-align: left;\n}\n\n.jokkoo-widget .jk-attachments__doc-name {\n margin-top: 4px;\n font-size: 12px;\n color: var(--jk-color-text-secondary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.jokkoo-widget .jk-voice-player {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 220px;\n}\n\n.jokkoo-widget .jk-voice-player__btn {\n width: 36px;\n height: 36px;\n border-radius: 18px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.jokkoo-widget .jk-voice-player__content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.jokkoo-widget .jk-voice-player__duration {\n font-size: 11px;\n line-height: 14px;\n}\n\n.jokkoo-widget .jk-waveform {\n display: flex;\n align-items: center;\n gap: 1.5px;\n flex: 1;\n}\n\n.jokkoo-widget .jk-waveform__bar {\n flex: 1;\n min-width: 2px;\n border-radius: 999px;\n}\n\n.jokkoo-widget .jk-voice-overlay {\n border-top: 1px solid var(--jk-color-border);\n padding: 10px 16px;\n background: var(--jk-color-background);\n}\n\n.jokkoo-widget .jk-voice-overlay__panel {\n display: flex;\n align-items: center;\n gap: 8px;\n min-height: 52px;\n padding: 8px;\n border: 1px solid var(--jk-color-border);\n border-radius: var(--jk-radius-bubble);\n background: var(--jk-color-surface);\n}\n\n.jokkoo-widget .jk-voice-overlay__rec {\n display: flex;\n align-items: center;\n gap: 6px;\n min-width: 52px;\n font-size: 13px;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n}\n\n.jokkoo-widget .jk-voice-overlay__dot {\n width: 8px;\n height: 8px;\n border-radius: 4px;\n background: #ef4444;\n animation: jk-pulse 1.3s ease infinite;\n}\n\n@keyframes jk-pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.35;\n }\n}\n\n.jokkoo-widget .jk-voice-overlay__uploading {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n font-size: 12px;\n color: var(--jk-color-text-secondary);\n}\n\n.jokkoo-widget .jk-conversation__body {\n position: relative;\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode, CSSProperties } from 'react';
|
|
3
|
+
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
4
|
+
import { QueryClient } from '@tanstack/react-query';
|
|
5
|
+
import * as _jokkoo_sdk_web from '@jokkoo/sdk-web';
|
|
6
|
+
import { UserTokenProvider, JokkooLocale, Translations, JokkooApiClient, JokkooRealtimeClient, Conversation, Message, RealtimeStatus, PendingAttachment, SendMessagePayload } from '@jokkoo/sdk-web';
|
|
7
|
+
export { ChatMessage, Conversation, JokkooConfig, Message, NEW_CONVERSATION_ID, Translations, UserTokenProvider } from '@jokkoo/sdk-web';
|
|
8
|
+
|
|
9
|
+
interface JokkooThemeColors {
|
|
10
|
+
primary: string;
|
|
11
|
+
background: string;
|
|
12
|
+
surface: string;
|
|
13
|
+
text: string;
|
|
14
|
+
textMuted: string;
|
|
15
|
+
border: string;
|
|
16
|
+
onPrimary: string;
|
|
17
|
+
chatHeaderBackground: string;
|
|
18
|
+
chatHeaderText: string;
|
|
19
|
+
chatHeaderButtonBackground: string;
|
|
20
|
+
chatBackground: string;
|
|
21
|
+
chatSurface: string;
|
|
22
|
+
chatText: string;
|
|
23
|
+
chatTextMuted: string;
|
|
24
|
+
chatBorder: string;
|
|
25
|
+
inputBackground: string;
|
|
26
|
+
inputPlaceholder: string;
|
|
27
|
+
userBubbleBackground: string;
|
|
28
|
+
userBubbleText: string;
|
|
29
|
+
agentBubbleBackground: string;
|
|
30
|
+
agentBubbleText: string;
|
|
31
|
+
statusActiveBackground: string;
|
|
32
|
+
statusActiveText: string;
|
|
33
|
+
statusEndedBackground: string;
|
|
34
|
+
statusEndedText: string;
|
|
35
|
+
discussionEndedBackground: string;
|
|
36
|
+
resolvedBackground: string;
|
|
37
|
+
resolvedText: string;
|
|
38
|
+
unreadIndicator: string;
|
|
39
|
+
}
|
|
40
|
+
interface JokkooThemeSpacing {
|
|
41
|
+
xs: number;
|
|
42
|
+
sm: number;
|
|
43
|
+
md: number;
|
|
44
|
+
lg: number;
|
|
45
|
+
xl: number;
|
|
46
|
+
}
|
|
47
|
+
interface JokkooThemeTypography {
|
|
48
|
+
headingSize: number;
|
|
49
|
+
headingWeight: "400" | "500" | "600" | "700";
|
|
50
|
+
headingLetterSpacing: number;
|
|
51
|
+
titleSize: number;
|
|
52
|
+
titleWeight: "400" | "500" | "600" | "700";
|
|
53
|
+
smallSize: number;
|
|
54
|
+
smallWeight: "400" | "500" | "600" | "700";
|
|
55
|
+
bodySize: number;
|
|
56
|
+
bodyWeight: "400" | "500" | "600" | "700";
|
|
57
|
+
captionSize: number;
|
|
58
|
+
captionWeight: "400" | "500" | "600" | "700";
|
|
59
|
+
messageSize: number;
|
|
60
|
+
timestampSize: number;
|
|
61
|
+
}
|
|
62
|
+
interface JokkooTheme {
|
|
63
|
+
colors: JokkooThemeColors;
|
|
64
|
+
spacing: JokkooThemeSpacing;
|
|
65
|
+
borderRadius: number;
|
|
66
|
+
cardBorderRadius: number;
|
|
67
|
+
badgeBorderRadius: number;
|
|
68
|
+
bubbleBorderRadius: number;
|
|
69
|
+
panelBorderRadius: number;
|
|
70
|
+
typography: JokkooThemeTypography;
|
|
71
|
+
}
|
|
72
|
+
declare const defaultTheme: JokkooTheme;
|
|
73
|
+
declare function mergeTheme(partial?: Partial<JokkooTheme>): JokkooTheme;
|
|
74
|
+
/** Map theme colors to CSS custom properties for `.jokkoo-widget`. */
|
|
75
|
+
declare function themeToCssVars(theme: JokkooTheme): Record<string, string>;
|
|
76
|
+
|
|
77
|
+
type JokkooScreen = {
|
|
78
|
+
name: "requestList";
|
|
79
|
+
} | {
|
|
80
|
+
name: "conversation";
|
|
81
|
+
conversationId: number;
|
|
82
|
+
};
|
|
83
|
+
interface JokkooProviderProps {
|
|
84
|
+
children: ReactNode;
|
|
85
|
+
theme?: Partial<JokkooTheme>;
|
|
86
|
+
/** Public channel identifier from Jokkoo dashboard */
|
|
87
|
+
clientToken: string;
|
|
88
|
+
/** Callback that returns a fresh user_token JWT from the tenant backend */
|
|
89
|
+
userTokenProvider: UserTokenProvider;
|
|
90
|
+
/** Jokkoo API base URL (defaults to production) */
|
|
91
|
+
baseUrl?: string;
|
|
92
|
+
/** End-user locale (defaults to "fr") */
|
|
93
|
+
locale?: JokkooLocale;
|
|
94
|
+
/** Enable debug logging */
|
|
95
|
+
debug?: boolean;
|
|
96
|
+
/** Seconds before JWT expiry to proactively refresh (default: 60) */
|
|
97
|
+
tokenRefreshBufferSeconds?: number;
|
|
98
|
+
/** Optional shared QueryClient instance */
|
|
99
|
+
queryClient?: QueryClient;
|
|
100
|
+
}
|
|
101
|
+
interface JokkooContextValue {
|
|
102
|
+
theme: JokkooTheme;
|
|
103
|
+
themeStyle: CSSProperties;
|
|
104
|
+
t: Translations;
|
|
105
|
+
locale?: JokkooLocale;
|
|
106
|
+
isChatOpen: boolean;
|
|
107
|
+
isExpanded: boolean;
|
|
108
|
+
currentScreen: JokkooScreen;
|
|
109
|
+
apiClient: JokkooApiClient;
|
|
110
|
+
realtimeClient: JokkooRealtimeClient;
|
|
111
|
+
openChat: () => void;
|
|
112
|
+
closeChat: () => void;
|
|
113
|
+
toggleExpanded: () => void;
|
|
114
|
+
navigateTo: (screen: JokkooScreen) => void;
|
|
115
|
+
goBack: () => void;
|
|
116
|
+
unreadCount: number;
|
|
117
|
+
markConversationRead: (conversationId: number) => void;
|
|
118
|
+
isConversationUnread: (conversationId: number) => boolean;
|
|
119
|
+
}
|
|
120
|
+
declare function JokkooProvider({ children, theme, clientToken, userTokenProvider, baseUrl, locale, debug, tokenRefreshBufferSeconds, queryClient: externalQueryClient, }: JokkooProviderProps): react.JSX.Element;
|
|
121
|
+
declare function useJokkooContext(): JokkooContextValue;
|
|
122
|
+
|
|
123
|
+
type FloatingButtonPosition = "bottom-right" | "bottom-left";
|
|
124
|
+
interface FloatingButtonProps {
|
|
125
|
+
position?: FloatingButtonPosition;
|
|
126
|
+
label?: string;
|
|
127
|
+
onClick?: () => void;
|
|
128
|
+
showBadge?: boolean;
|
|
129
|
+
className?: string;
|
|
130
|
+
}
|
|
131
|
+
declare function FloatingButton({ position, label, onClick, showBadge, className, }: FloatingButtonProps): react.JSX.Element;
|
|
132
|
+
|
|
133
|
+
interface JokkooWidgetProps {
|
|
134
|
+
/** Position of the floating launcher button when the panel is closed */
|
|
135
|
+
position?: FloatingButtonPosition;
|
|
136
|
+
/** Optional custom label for the floating launcher */
|
|
137
|
+
launcherLabel?: string;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Complete Jokkoo support widget: floating launcher + slide-up panel with
|
|
141
|
+
* request list and conversation screens.
|
|
142
|
+
*/
|
|
143
|
+
declare function JokkooWidget({ position, launcherLabel }: JokkooWidgetProps): react.JSX.Element;
|
|
144
|
+
|
|
145
|
+
interface WidgetPanelProps {
|
|
146
|
+
children: ReactNode;
|
|
147
|
+
headerVariant?: "light" | "dark";
|
|
148
|
+
}
|
|
149
|
+
declare function WidgetPanel({ children, headerVariant }: WidgetPanelProps): react.JSX.Element;
|
|
150
|
+
|
|
151
|
+
declare function RequestListScreen(): react.JSX.Element;
|
|
152
|
+
|
|
153
|
+
interface ConversationScreenProps {
|
|
154
|
+
conversationId: number;
|
|
155
|
+
}
|
|
156
|
+
declare function ConversationScreen({ conversationId }: ConversationScreenProps): react.JSX.Element;
|
|
157
|
+
|
|
158
|
+
declare const jokkooQueryKeys: {
|
|
159
|
+
conversations: readonly ["jokkoo", "conversations"];
|
|
160
|
+
conversationPolicies: readonly ["jokkoo", "conversation-policies"];
|
|
161
|
+
messages: (conversationId: number) => readonly ["jokkoo", "conversations", number, "messages"];
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
interface UseConversationsOptions {
|
|
165
|
+
pageSize?: number;
|
|
166
|
+
}
|
|
167
|
+
interface UseConversationsResult {
|
|
168
|
+
conversations: Conversation[];
|
|
169
|
+
fetchNextPage: () => void;
|
|
170
|
+
hasNextPage: boolean;
|
|
171
|
+
isFetchingNextPage: boolean;
|
|
172
|
+
isLoading: boolean;
|
|
173
|
+
isError: boolean;
|
|
174
|
+
refetch: () => void;
|
|
175
|
+
}
|
|
176
|
+
declare function useConversations(options?: UseConversationsOptions): UseConversationsResult;
|
|
177
|
+
|
|
178
|
+
type MessagesPageParam = "latest" | number;
|
|
179
|
+
interface UseMessagesOptions {
|
|
180
|
+
pageSize?: number;
|
|
181
|
+
enabled?: boolean;
|
|
182
|
+
}
|
|
183
|
+
interface UseMessagesResult {
|
|
184
|
+
messages: Message[];
|
|
185
|
+
fetchNextPage: () => void;
|
|
186
|
+
hasNextPage: boolean;
|
|
187
|
+
isFetchingNextPage: boolean;
|
|
188
|
+
isLoading: boolean;
|
|
189
|
+
isError: boolean;
|
|
190
|
+
}
|
|
191
|
+
declare function useMessages(conversationId: number, options?: UseMessagesOptions): UseMessagesResult;
|
|
192
|
+
|
|
193
|
+
declare function useRealtimeStatus(): RealtimeStatus;
|
|
194
|
+
|
|
195
|
+
declare function useFileUpload(): {
|
|
196
|
+
pendingAttachments: PendingAttachment[];
|
|
197
|
+
isUploading: boolean;
|
|
198
|
+
confirmedFileIds: string[];
|
|
199
|
+
pickAttachments: () => void;
|
|
200
|
+
removeAttachment: (id: string) => void;
|
|
201
|
+
retryAttachment: (id: string) => void;
|
|
202
|
+
clearAttachments: () => void;
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
type VoiceRecorderState = "idle" | "recording" | "stopped" | "uploading" | "confirmed";
|
|
206
|
+
declare function useVoiceRecorder(): {
|
|
207
|
+
state: VoiceRecorderState;
|
|
208
|
+
durationMs: number;
|
|
209
|
+
meteringLevels: number[];
|
|
210
|
+
uploadProgress: number;
|
|
211
|
+
confirmedFileId: string | null;
|
|
212
|
+
audioDurationMs: number;
|
|
213
|
+
isRecordingActive: boolean;
|
|
214
|
+
startRecording: () => Promise<void>;
|
|
215
|
+
cancelRecording: () => Promise<void>;
|
|
216
|
+
stopAndUpload: () => Promise<{
|
|
217
|
+
fileId: string;
|
|
218
|
+
audioDurationMs: number;
|
|
219
|
+
} | null>;
|
|
220
|
+
reset: () => void;
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
declare function useSendMessage(): _tanstack_react_query.UseMutationResult<_jokkoo_sdk_web.Message, Error, SendMessagePayload, unknown>;
|
|
224
|
+
|
|
225
|
+
declare function useUnreadCount(): number;
|
|
226
|
+
|
|
227
|
+
export { ConversationScreen, type ConversationScreenProps, FloatingButton, type FloatingButtonPosition, type FloatingButtonProps, FloatingButton as JokkooButton, JokkooProvider, type JokkooProviderProps, type JokkooScreen, type JokkooTheme, type JokkooThemeColors, type JokkooThemeSpacing, type JokkooThemeTypography, JokkooWidget, type JokkooWidgetProps, type MessagesPageParam, RequestListScreen, type UseConversationsOptions, type UseConversationsResult, type UseMessagesOptions, type UseMessagesResult, type VoiceRecorderState, WidgetPanel, type WidgetPanelProps, defaultTheme, jokkooQueryKeys, mergeTheme, themeToCssVars, useConversations, useFileUpload, useJokkooContext, useMessages, useRealtimeStatus, useSendMessage, useUnreadCount, useVoiceRecorder };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode, CSSProperties } from 'react';
|
|
3
|
+
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
4
|
+
import { QueryClient } from '@tanstack/react-query';
|
|
5
|
+
import * as _jokkoo_sdk_web from '@jokkoo/sdk-web';
|
|
6
|
+
import { UserTokenProvider, JokkooLocale, Translations, JokkooApiClient, JokkooRealtimeClient, Conversation, Message, RealtimeStatus, PendingAttachment, SendMessagePayload } from '@jokkoo/sdk-web';
|
|
7
|
+
export { ChatMessage, Conversation, JokkooConfig, Message, NEW_CONVERSATION_ID, Translations, UserTokenProvider } from '@jokkoo/sdk-web';
|
|
8
|
+
|
|
9
|
+
interface JokkooThemeColors {
|
|
10
|
+
primary: string;
|
|
11
|
+
background: string;
|
|
12
|
+
surface: string;
|
|
13
|
+
text: string;
|
|
14
|
+
textMuted: string;
|
|
15
|
+
border: string;
|
|
16
|
+
onPrimary: string;
|
|
17
|
+
chatHeaderBackground: string;
|
|
18
|
+
chatHeaderText: string;
|
|
19
|
+
chatHeaderButtonBackground: string;
|
|
20
|
+
chatBackground: string;
|
|
21
|
+
chatSurface: string;
|
|
22
|
+
chatText: string;
|
|
23
|
+
chatTextMuted: string;
|
|
24
|
+
chatBorder: string;
|
|
25
|
+
inputBackground: string;
|
|
26
|
+
inputPlaceholder: string;
|
|
27
|
+
userBubbleBackground: string;
|
|
28
|
+
userBubbleText: string;
|
|
29
|
+
agentBubbleBackground: string;
|
|
30
|
+
agentBubbleText: string;
|
|
31
|
+
statusActiveBackground: string;
|
|
32
|
+
statusActiveText: string;
|
|
33
|
+
statusEndedBackground: string;
|
|
34
|
+
statusEndedText: string;
|
|
35
|
+
discussionEndedBackground: string;
|
|
36
|
+
resolvedBackground: string;
|
|
37
|
+
resolvedText: string;
|
|
38
|
+
unreadIndicator: string;
|
|
39
|
+
}
|
|
40
|
+
interface JokkooThemeSpacing {
|
|
41
|
+
xs: number;
|
|
42
|
+
sm: number;
|
|
43
|
+
md: number;
|
|
44
|
+
lg: number;
|
|
45
|
+
xl: number;
|
|
46
|
+
}
|
|
47
|
+
interface JokkooThemeTypography {
|
|
48
|
+
headingSize: number;
|
|
49
|
+
headingWeight: "400" | "500" | "600" | "700";
|
|
50
|
+
headingLetterSpacing: number;
|
|
51
|
+
titleSize: number;
|
|
52
|
+
titleWeight: "400" | "500" | "600" | "700";
|
|
53
|
+
smallSize: number;
|
|
54
|
+
smallWeight: "400" | "500" | "600" | "700";
|
|
55
|
+
bodySize: number;
|
|
56
|
+
bodyWeight: "400" | "500" | "600" | "700";
|
|
57
|
+
captionSize: number;
|
|
58
|
+
captionWeight: "400" | "500" | "600" | "700";
|
|
59
|
+
messageSize: number;
|
|
60
|
+
timestampSize: number;
|
|
61
|
+
}
|
|
62
|
+
interface JokkooTheme {
|
|
63
|
+
colors: JokkooThemeColors;
|
|
64
|
+
spacing: JokkooThemeSpacing;
|
|
65
|
+
borderRadius: number;
|
|
66
|
+
cardBorderRadius: number;
|
|
67
|
+
badgeBorderRadius: number;
|
|
68
|
+
bubbleBorderRadius: number;
|
|
69
|
+
panelBorderRadius: number;
|
|
70
|
+
typography: JokkooThemeTypography;
|
|
71
|
+
}
|
|
72
|
+
declare const defaultTheme: JokkooTheme;
|
|
73
|
+
declare function mergeTheme(partial?: Partial<JokkooTheme>): JokkooTheme;
|
|
74
|
+
/** Map theme colors to CSS custom properties for `.jokkoo-widget`. */
|
|
75
|
+
declare function themeToCssVars(theme: JokkooTheme): Record<string, string>;
|
|
76
|
+
|
|
77
|
+
type JokkooScreen = {
|
|
78
|
+
name: "requestList";
|
|
79
|
+
} | {
|
|
80
|
+
name: "conversation";
|
|
81
|
+
conversationId: number;
|
|
82
|
+
};
|
|
83
|
+
interface JokkooProviderProps {
|
|
84
|
+
children: ReactNode;
|
|
85
|
+
theme?: Partial<JokkooTheme>;
|
|
86
|
+
/** Public channel identifier from Jokkoo dashboard */
|
|
87
|
+
clientToken: string;
|
|
88
|
+
/** Callback that returns a fresh user_token JWT from the tenant backend */
|
|
89
|
+
userTokenProvider: UserTokenProvider;
|
|
90
|
+
/** Jokkoo API base URL (defaults to production) */
|
|
91
|
+
baseUrl?: string;
|
|
92
|
+
/** End-user locale (defaults to "fr") */
|
|
93
|
+
locale?: JokkooLocale;
|
|
94
|
+
/** Enable debug logging */
|
|
95
|
+
debug?: boolean;
|
|
96
|
+
/** Seconds before JWT expiry to proactively refresh (default: 60) */
|
|
97
|
+
tokenRefreshBufferSeconds?: number;
|
|
98
|
+
/** Optional shared QueryClient instance */
|
|
99
|
+
queryClient?: QueryClient;
|
|
100
|
+
}
|
|
101
|
+
interface JokkooContextValue {
|
|
102
|
+
theme: JokkooTheme;
|
|
103
|
+
themeStyle: CSSProperties;
|
|
104
|
+
t: Translations;
|
|
105
|
+
locale?: JokkooLocale;
|
|
106
|
+
isChatOpen: boolean;
|
|
107
|
+
isExpanded: boolean;
|
|
108
|
+
currentScreen: JokkooScreen;
|
|
109
|
+
apiClient: JokkooApiClient;
|
|
110
|
+
realtimeClient: JokkooRealtimeClient;
|
|
111
|
+
openChat: () => void;
|
|
112
|
+
closeChat: () => void;
|
|
113
|
+
toggleExpanded: () => void;
|
|
114
|
+
navigateTo: (screen: JokkooScreen) => void;
|
|
115
|
+
goBack: () => void;
|
|
116
|
+
unreadCount: number;
|
|
117
|
+
markConversationRead: (conversationId: number) => void;
|
|
118
|
+
isConversationUnread: (conversationId: number) => boolean;
|
|
119
|
+
}
|
|
120
|
+
declare function JokkooProvider({ children, theme, clientToken, userTokenProvider, baseUrl, locale, debug, tokenRefreshBufferSeconds, queryClient: externalQueryClient, }: JokkooProviderProps): react.JSX.Element;
|
|
121
|
+
declare function useJokkooContext(): JokkooContextValue;
|
|
122
|
+
|
|
123
|
+
type FloatingButtonPosition = "bottom-right" | "bottom-left";
|
|
124
|
+
interface FloatingButtonProps {
|
|
125
|
+
position?: FloatingButtonPosition;
|
|
126
|
+
label?: string;
|
|
127
|
+
onClick?: () => void;
|
|
128
|
+
showBadge?: boolean;
|
|
129
|
+
className?: string;
|
|
130
|
+
}
|
|
131
|
+
declare function FloatingButton({ position, label, onClick, showBadge, className, }: FloatingButtonProps): react.JSX.Element;
|
|
132
|
+
|
|
133
|
+
interface JokkooWidgetProps {
|
|
134
|
+
/** Position of the floating launcher button when the panel is closed */
|
|
135
|
+
position?: FloatingButtonPosition;
|
|
136
|
+
/** Optional custom label for the floating launcher */
|
|
137
|
+
launcherLabel?: string;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Complete Jokkoo support widget: floating launcher + slide-up panel with
|
|
141
|
+
* request list and conversation screens.
|
|
142
|
+
*/
|
|
143
|
+
declare function JokkooWidget({ position, launcherLabel }: JokkooWidgetProps): react.JSX.Element;
|
|
144
|
+
|
|
145
|
+
interface WidgetPanelProps {
|
|
146
|
+
children: ReactNode;
|
|
147
|
+
headerVariant?: "light" | "dark";
|
|
148
|
+
}
|
|
149
|
+
declare function WidgetPanel({ children, headerVariant }: WidgetPanelProps): react.JSX.Element;
|
|
150
|
+
|
|
151
|
+
declare function RequestListScreen(): react.JSX.Element;
|
|
152
|
+
|
|
153
|
+
interface ConversationScreenProps {
|
|
154
|
+
conversationId: number;
|
|
155
|
+
}
|
|
156
|
+
declare function ConversationScreen({ conversationId }: ConversationScreenProps): react.JSX.Element;
|
|
157
|
+
|
|
158
|
+
declare const jokkooQueryKeys: {
|
|
159
|
+
conversations: readonly ["jokkoo", "conversations"];
|
|
160
|
+
conversationPolicies: readonly ["jokkoo", "conversation-policies"];
|
|
161
|
+
messages: (conversationId: number) => readonly ["jokkoo", "conversations", number, "messages"];
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
interface UseConversationsOptions {
|
|
165
|
+
pageSize?: number;
|
|
166
|
+
}
|
|
167
|
+
interface UseConversationsResult {
|
|
168
|
+
conversations: Conversation[];
|
|
169
|
+
fetchNextPage: () => void;
|
|
170
|
+
hasNextPage: boolean;
|
|
171
|
+
isFetchingNextPage: boolean;
|
|
172
|
+
isLoading: boolean;
|
|
173
|
+
isError: boolean;
|
|
174
|
+
refetch: () => void;
|
|
175
|
+
}
|
|
176
|
+
declare function useConversations(options?: UseConversationsOptions): UseConversationsResult;
|
|
177
|
+
|
|
178
|
+
type MessagesPageParam = "latest" | number;
|
|
179
|
+
interface UseMessagesOptions {
|
|
180
|
+
pageSize?: number;
|
|
181
|
+
enabled?: boolean;
|
|
182
|
+
}
|
|
183
|
+
interface UseMessagesResult {
|
|
184
|
+
messages: Message[];
|
|
185
|
+
fetchNextPage: () => void;
|
|
186
|
+
hasNextPage: boolean;
|
|
187
|
+
isFetchingNextPage: boolean;
|
|
188
|
+
isLoading: boolean;
|
|
189
|
+
isError: boolean;
|
|
190
|
+
}
|
|
191
|
+
declare function useMessages(conversationId: number, options?: UseMessagesOptions): UseMessagesResult;
|
|
192
|
+
|
|
193
|
+
declare function useRealtimeStatus(): RealtimeStatus;
|
|
194
|
+
|
|
195
|
+
declare function useFileUpload(): {
|
|
196
|
+
pendingAttachments: PendingAttachment[];
|
|
197
|
+
isUploading: boolean;
|
|
198
|
+
confirmedFileIds: string[];
|
|
199
|
+
pickAttachments: () => void;
|
|
200
|
+
removeAttachment: (id: string) => void;
|
|
201
|
+
retryAttachment: (id: string) => void;
|
|
202
|
+
clearAttachments: () => void;
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
type VoiceRecorderState = "idle" | "recording" | "stopped" | "uploading" | "confirmed";
|
|
206
|
+
declare function useVoiceRecorder(): {
|
|
207
|
+
state: VoiceRecorderState;
|
|
208
|
+
durationMs: number;
|
|
209
|
+
meteringLevels: number[];
|
|
210
|
+
uploadProgress: number;
|
|
211
|
+
confirmedFileId: string | null;
|
|
212
|
+
audioDurationMs: number;
|
|
213
|
+
isRecordingActive: boolean;
|
|
214
|
+
startRecording: () => Promise<void>;
|
|
215
|
+
cancelRecording: () => Promise<void>;
|
|
216
|
+
stopAndUpload: () => Promise<{
|
|
217
|
+
fileId: string;
|
|
218
|
+
audioDurationMs: number;
|
|
219
|
+
} | null>;
|
|
220
|
+
reset: () => void;
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
declare function useSendMessage(): _tanstack_react_query.UseMutationResult<_jokkoo_sdk_web.Message, Error, SendMessagePayload, unknown>;
|
|
224
|
+
|
|
225
|
+
declare function useUnreadCount(): number;
|
|
226
|
+
|
|
227
|
+
export { ConversationScreen, type ConversationScreenProps, FloatingButton, type FloatingButtonPosition, type FloatingButtonProps, FloatingButton as JokkooButton, JokkooProvider, type JokkooProviderProps, type JokkooScreen, type JokkooTheme, type JokkooThemeColors, type JokkooThemeSpacing, type JokkooThemeTypography, JokkooWidget, type JokkooWidgetProps, type MessagesPageParam, RequestListScreen, type UseConversationsOptions, type UseConversationsResult, type UseMessagesOptions, type UseMessagesResult, type VoiceRecorderState, WidgetPanel, type WidgetPanelProps, defaultTheme, jokkooQueryKeys, mergeTheme, themeToCssVars, useConversations, useFileUpload, useJokkooContext, useMessages, useRealtimeStatus, useSendMessage, useUnreadCount, useVoiceRecorder };
|