@rohitkvs/revrag-web-sdk
Version:
Industry-standard React SDK for Revrag chat functionality with simple script integration. Zero setup required - just include a script tag!
2 lines (1 loc) • 12.6 kB
CSS
.revrag-chat-container{display:flex;flex-direction:column;height:600px;width:100%;max-width:800px;border:1px solid #e1e5e9;border-radius:12px;background:#fff;box-shadow:0 4px 12px #0000001a;overflow:hidden}.revrag-chat-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-bottom:1px solid #e1e5e9}.revrag-chat-header h3{margin:0;font-size:18px;font-weight:600}.revrag-chat-controls{display:flex;align-items:center;gap:16px}.clear-btn{padding:8px 16px;background:#fff3;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:6px;cursor:pointer;font-size:14px;transition:all .2s ease}.clear-btn:hover{background:#ffffff4d}.status-indicator{display:flex;align-items:center;gap:8px;font-size:14px}.status-dot{width:8px;height:8px;border-radius:50%;background:#ef4444}.status-dot.connected{background:#10b981}.revrag-messages{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:16px}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;color:#6b7280;font-style:italic}.message{display:flex;flex-direction:column;max-width:70%}.user-message{align-self:flex-end}.user-message .message-content{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:18px 18px 4px}.assistant-message{align-self:flex-start}.assistant-message .message-content{background:#f3f4f6;color:#374151;border-radius:18px 18px 18px 4px}.message-content{padding:12px 16px;word-wrap:break-word;line-height:1.5}.message-timestamp{font-size:12px;color:#9ca3af;padding:4px 16px 0;align-self:flex-end}.assistant-message .message-timestamp{align-self:flex-start}.revrag-input-area{padding:20px;border-top:1px solid #e5e7eb;background:#f9fafb}.input-container{display:flex;gap:12px;align-items:flex-end}.input-container textarea{flex:1;padding:12px 16px;border:1px solid #d1d5db;border-radius:12px;font-size:14px;font-family:inherit;resize:none;outline:none;transition:border-color .2s ease;min-height:44px;max-height:120px}.input-container textarea:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.send-btn{padding:12px 24px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:12px;cursor:pointer;font-size:14px;font-weight:600;transition:all .2s ease;min-width:64px;height:44px}.send-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #667eea4d}.send-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.revrag-loading,.revrag-error{display:flex;flex-direction:column;align-items:center;justify-content:center;height:300px;text-align:center;padding:40px}.spinner{width:40px;height:40px;border:4px solid #f3f4f6;border-top:4px solid #667eea;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:16px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.revrag-error h3{color:#ef4444;margin-bottom:12px}.revrag-error button{margin-top:16px;padding:10px 20px;background:#667eea;color:#fff;border:none;border-radius:6px;cursor:pointer}.revrag-error button:hover{background:#5a67d8}.revrag-messages::-webkit-scrollbar{width:6px}.revrag-messages::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.revrag-messages::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.revrag-messages::-webkit-scrollbar-thumb:hover{background:#a8a8a8}@media (max-width: 768px){.revrag-chat-container{height:500px;border-radius:0;border-left:none;border-right:none}.revrag-chat-header{padding:12px 16px}.revrag-chat-controls{gap:12px}.clear-btn{padding:6px 12px;font-size:12px}.revrag-messages{padding:16px;gap:12px}.message{max-width:85%}.revrag-input-area{padding:16px}}.floating-help-widget{position:fixed;z-index:10000;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-user-select:none;user-select:none;--primary-color: #667eea;--hover-color: #5a67d8;--text-color: #2d3748;--bg-color: #ffffff;--shadow-color: rgba(0, 0, 0, .1);--border-color: rgba(0, 0, 0, .08)}.floating-help-widget.position-bottom-right{bottom:24px;right:24px}.floating-help-widget.position-bottom-left{bottom:24px;left:24px}.floating-help-widget.position-top-right{top:24px;right:24px}.floating-help-widget.position-top-left{top:24px;left:24px}.floating-help-widget.size-small{--orb-size: 48px;--font-size: 13px;--container-width: 280px;--container-height: 360px}.floating-help-widget.size-medium{--orb-size: 60px;--font-size: 14px;--container-width: 340px;--container-height: 420px}.floating-help-widget.size-large{--orb-size: 72px;--font-size: 16px;--container-width: 400px;--container-height: 480px}.help-tooltip{position:absolute;background:var(--text-color);color:#fff;padding:8px 12px;border-radius:8px;font-size:13px;white-space:nowrap;animation:tooltipFadeIn .2s ease-out;box-shadow:0 4px 12px #00000026}.position-bottom-right .help-tooltip,.position-bottom-left .help-tooltip{bottom:calc(var(--orb-size) + 12px);left:50%;transform:translate(-50%)}.position-top-right .help-tooltip,.position-top-left .help-tooltip{top:calc(var(--orb-size) + 12px);left:50%;transform:translate(-50%)}.tooltip-arrow{position:absolute;width:0;height:0;left:50%;transform:translate(-50%)}.position-bottom-right .tooltip-arrow,.position-bottom-left .tooltip-arrow{top:100%;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid var(--text-color)}.position-top-right .tooltip-arrow,.position-top-left .tooltip-arrow{bottom:100%;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid var(--text-color)}.help-orb{position:relative;width:var(--orb-size);height:var(--orb-size);border-radius:50%;border:none;background:linear-gradient(135deg,var(--primary-color) 0%,var(--hover-color) 100%);color:#fff;cursor:pointer;box-shadow:0 4px 20px var(--shadow-color);transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center;overflow:hidden}.help-orb:hover{transform:scale(1.05);box-shadow:0 6px 25px #00000026}.help-orb.expanded{transform:rotate(45deg)}.help-orb:active{transform:scale(.95)}.orb-icon{width:24px;height:24px;transition:transform .3s ease;z-index:2;position:relative}.help-orb.expanded .orb-icon{transform:rotate(-45deg)}.orb-pulse{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:50%;background:var(--primary-color);opacity:.4;animation:pulse 2s infinite}@keyframes pulse{0%{transform:scale(1);opacity:.4}50%{transform:scale(1.1);opacity:.2}to{transform:scale(1);opacity:.4}}@keyframes tooltipFadeIn{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.help-options{position:absolute;display:flex;flex-direction:column;gap:8px;background:var(--bg-color);border-radius:12px;padding:12px;box-shadow:0 8px 32px var(--shadow-color);border:1px solid var(--border-color);min-width:160px;animation:optionsSlideIn .3s cubic-bezier(.4,0,.2,1)}.position-bottom-right .help-options,.position-bottom-left .help-options{bottom:calc(var(--orb-size) + 12px);right:0}.position-top-right .help-options,.position-top-left .help-options{top:calc(var(--orb-size) + 12px);right:0}.help-option{display:flex;align-items:center;gap:12px;padding:12px 16px;border:none;background:transparent;border-radius:8px;cursor:pointer;transition:all .2s ease;font-size:var(--font-size);color:var(--text-color);font-weight:500}.help-option:hover{background:var(--primary-color);color:#fff;transform:translateY(-1px)}.option-icon{width:20px;height:20px;flex-shrink:0}@keyframes optionsSlideIn{0%{opacity:0;transform:translateY(12px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.help-chat-container{position:absolute;width:var(--container-width);height:var(--container-height);background:var(--bg-color);border-radius:16px;box-shadow:0 12px 40px var(--shadow-color);border:1px solid var(--border-color);display:flex;flex-direction:column;animation:containerSlideIn .4s cubic-bezier(.4,0,.2,1);overflow:hidden}.position-bottom-right .help-chat-container,.position-bottom-left .help-chat-container{bottom:calc(var(--orb-size) + 12px);right:0}.position-top-right .help-chat-container,.position-top-left .help-chat-container{top:calc(var(--orb-size) + 12px);right:0}.chat-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:var(--primary-color);color:#fff;border-radius:16px 16px 0 0}.chat-header h3{margin:0;font-size:16px;font-weight:600}.close-btn{width:32px;height:32px;border:none;background:#fff3;color:#fff;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s ease}.close-btn:hover{background:#ffffff4d}.close-btn svg{width:16px;height:16px}.chat-content{flex:1;padding:0;overflow:hidden}.help-call-container{position:absolute;width:280px;background:var(--bg-color);border-radius:16px;box-shadow:0 12px 40px var(--shadow-color);border:1px solid var(--border-color);display:flex;flex-direction:column;animation:containerSlideIn .4s cubic-bezier(.4,0,.2,1);overflow:hidden}.position-bottom-right .help-call-container,.position-bottom-left .help-call-container{bottom:calc(var(--orb-size) + 12px);right:0}.position-top-right .help-call-container,.position-top-left .help-call-container{top:calc(var(--orb-size) + 12px);right:0}.call-header{padding:16px 20px;background:var(--primary-color);color:#fff;border-radius:16px 16px 0 0}.call-status{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500}.status-indicator{width:8px;height:8px;border-radius:50%;background:#ffffff80}.status-indicator.active{background:#10b981;animation:statusPulse 2s infinite}@keyframes statusPulse{0%,to{opacity:1}50%{opacity:.5}}.call-content{padding:24px 20px;display:flex;flex-direction:column;align-items:center;text-align:center}.call-avatar{position:relative;width:64px;height:64px;margin-bottom:16px}.call-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover}.avatar-status{position:absolute;bottom:4px;right:4px;width:16px;height:16px;background:#10b981;border:2px solid white;border-radius:50%}.call-info h4{margin:0 0 4px;font-size:16px;font-weight:600;color:var(--text-color)}.call-info p{margin:0;font-size:14px;color:#64748b}.call-controls{display:flex;justify-content:center;gap:16px;padding:20px;background:#f8fafc;border-radius:0 0 16px 16px}.control-btn{width:48px;height:48px;border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:0}.control-btn svg{width:20px;height:20px}.mute-btn{background:#64748b;color:#fff}.mute-btn:hover{background:#475569;transform:scale(1.05)}.mute-btn.active{background:#ef4444}.mute-btn.active:hover{background:#dc2626}.end-call-btn{background:#ef4444;color:#fff}.end-call-btn:hover{background:#dc2626;transform:scale(1.05)}@keyframes containerSlideIn{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 768px){.floating-help-widget{--container-width: calc(100vw - 32px) ;--container-height: calc(100vh - 120px) }.position-bottom-right,.position-bottom-left{bottom:16px}.position-bottom-right{right:16px}.position-bottom-left{left:16px}.position-top-right,.position-top-left{top:16px}.position-top-right{right:16px}.position-top-left{left:16px}.help-chat-container,.help-call-container{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:calc(100vw - 32px);max-width:400px}.help-chat-container{height:calc(100vh - 120px);max-height:600px}}@media (max-width: 480px){.floating-help-widget.size-medium{--orb-size: 56px}.floating-help-widget.size-large{--orb-size: 64px}.help-options{min-width:140px}.help-option{padding:10px 14px;font-size:13px}}@media (prefers-contrast: high){.floating-help-widget{--shadow-color: rgba(0, 0, 0, .3);--border-color: rgba(0, 0, 0, .2)}.help-orb{border:2px solid var(--text-color)}.help-options,.help-chat-container,.help-call-container{border:2px solid var(--border-color)}}@media (prefers-reduced-motion: reduce){.floating-help-widget *{animation-duration:.01ms;animation-iteration-count:1;transition-duration:.01ms}.orb-pulse,.status-indicator.active{animation:none}}@media (prefers-color-scheme: dark){.floating-help-widget{--text-color: #f7fafc;--bg-color: #2d3748;--border-color: rgba(255, 255, 255, .1);--shadow-color: rgba(0, 0, 0, .3)}.call-controls{background:#4a5568}.help-tooltip{background:#1a202c}.tooltip-arrow{border-top-color:#1a202c;border-bottom-color:#1a202c}}