@bmx-labs/chat-widget 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -46
- package/dist/adapters/index.d.ts +1 -1
- package/dist/adapters/rest-adapter.d.ts +25 -0
- package/dist/components/chat/ChatPanel.d.ts +2 -1
- package/dist/components/chat/SettingsPanel.d.ts +3 -1
- package/dist/components/message/EmptyMessages.d.ts +4 -0
- package/dist/components/message/MessageList.d.ts +2 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/types.d.ts +71 -0
- package/package.json +10 -9
- package/dist/adapters/AnthropicAdapter.d.ts +0 -16
- package/dist/adapters/ContextAdapter.d.ts +0 -19
- package/dist/adapters/CustomAPIAdapter.d.ts +0 -20
- package/dist/adapters/KnowledgeBaseAdapter.d.ts +0 -20
- package/dist/adapters/MockAdapter.d.ts +0 -6
- package/dist/adapters/MorphexAdapter.d.ts +0 -16
- package/dist/adapters/OpenAIAdapter.d.ts +0 -17
- package/dist/adapters/RAGAdapter.d.ts +0 -29
- package/dist/adapters/RestRAGAdapter.d.ts +0 -9
- package/dist/adapters/TestAdapter.d.ts +0 -6
- package/dist/adapters/context/ContextAdapter.d.ts +0 -19
- package/dist/adapters/context/KnowledgeBaseAdapter.d.ts +0 -20
- package/dist/adapters/context/MorphexAdapter.d.ts +0 -16
- package/dist/adapters/context/PineconeRAGAdapter.d.ts +0 -40
- package/dist/adapters/context/RAGAdapter.d.ts +0 -29
- package/dist/adapters/context/index.d.ts +0 -2
- package/dist/adapters/rest.d.ts +0 -7
- package/dist/components/LazyComponents.d.ts +0 -3
- package/dist/components/Orb.d.ts +0 -8
- package/dist/components/OrbButton.d.ts +0 -10
- package/dist/components/SimpleIridescence.d.ts +0 -8
- package/dist/components/SimpleOrb.d.ts +0 -8
- package/dist/components/ogl/DarkVeil.d.ts +0 -11
- package/dist/data/morphexData.d.ts +0 -7
- package/dist/framer.js +0 -1
- package/dist/index.js.map +0 -1
- package/dist/ogl.js +0 -1
- package/dist/styles.css.map +0 -1
- package/dist/styles.js.map +0 -1
- package/dist/vendors.js +0 -1
package/dist/styles.css
CHANGED
@@ -1 +1 @@
|
|
1
|
-
[data-bmx-chat-bot-root]{--bmx-font-family: "Darker Grotesque", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, Helvetica Neue, Arial, sans-serif;--bmx-color-accent: #0153ff;--bmx-color-bg: #060911;--bmx-color-panel: #090d18;--bmx-color-border: #1f2937;--bmx-color-text: #e5e7eb;--bmx-color-title: #f3f4f6;--bmx-color-button-bg: #111827;--bmx-color-user-bubble: #1d4ed8;--bmx-color-input-bg: #0b1220}.orb-container{position:relative;z-index:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.orb-container canvas{display:block;width:100% !important;height:100% !important;object-fit:contain}.iridescence-container{width:100%;height:100%}.bmxcb{font-family:var(--bmx-font-family)}.bmxcb__button{cursor:pointer;width:56px;height:56px;border-radius:28px;background:var(--bmx-color-button-bg);color:#fff;border:1px solid var(--bmx-color-bg);box-shadow:0 8px 24px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center}.bmxcb__orb-button{cursor:pointer;width:60px;height:60px;border:none;border-radius:50%;padding:0;overflow:hidden;background:rgba(0,0,0,0);position:relative;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(0,0,0,.3)}.bmxcb__orb-button .orb-container{width:100%;height:100%;position:relative;display:flex;align-items:center;justify-content:center}.bmxcb__orb-button .orb-container canvas{width:100% !important;height:100% !important;display:block !important;object-fit:contain;border-radius:50%}.bmxcb__panel{position:absolute;right:0;bottom:64px;width:360px;max-width:calc(100vw - 32px);max-height:70vh;min-height:400px;background:var(--bmx-color-bg);color:var(--bmx-color-text);border:1px solid var(--bmx-color-border);border-radius:12px;overflow:hidden;box-shadow:0 16px 48px rgba(0,0,0,.4);display:flex;flex-direction:column}.bmxcb__header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;font-weight:600;background:var(--bmx-color-panel);color:var(--bmx-color-title);height:45px}.bmxcb__messages{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px;scroll-behavior:smooth;max-height:400px;position:relative}.bmxcb__messages::-webkit-scrollbar{width:6px}.bmxcb__messages::-webkit-scrollbar-track{background:rgba(0,0,0,0)}.bmxcb__messages::-webkit-scrollbar-thumb{background:var(--bmx-color-border);border-radius:3px}.bmxcb__messages::-webkit-scrollbar-thumb:hover{background:var(--bmx-color-text)}.bmxcb__scroll-to-bottom{position:sticky;bottom:12px;width:32px;height:32px;border-radius:50%;background:var(--bmx-color-accent);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;box-shadow:0 2px 8px rgba(0,0,0,.2);transition:all .2s ease;z-index:10;margin:0 auto;margin-top:auto;flex-shrink:0}.bmxcb__scroll-to-bottom:hover{background:#0041cc;transform:scale(1.1)}.bmxcb__message{margin:8px 0}.bmxcb__message--user{display:flex;justify-content:flex-end;align-self:flex-end;max-width:80%}.bmxcb__message--assistant{display:flex;align-items:flex-start;gap:12px;justify-content:flex-start;align-self:flex-start;max-width:100%}.bmxcb__message-avatar{flex-shrink:0;margin-top:4px}.bmxcb__avatar{width:32px;height:32px;border-radius:50%;background:var(--bmx-color-accent);display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(0,0,0,.1);overflow:hidden;border:.5px solid var(--bmx-color-border)}.bmxcb__avatar-icon{font-size:16px;line-height:1}.bmxcb__message-content{min-width:0;position:relative}.bmxcb__typing{display:inline-flex;align-items:center;gap:4px;background:var(--bmx-color-panel);border:1px solid var(--bmx-color-border);border-radius:12px;padding:6px 10px}.bmxcb__dot{width:6px;height:6px;border-radius:50%;background:var(--bmx-color-text);opacity:.4}.bmxcb__message-text{padding:6px 10px;border-radius:10px;font-size:15px;line-height:1.4;word-wrap:break-word;overflow-wrap:break-word;background:var(--bmx-color-accent);color:#fff;text-align:right;display:inline-block;max-width:100%;min-width:0}.bmxcb__message-time{margin-top:4px;font-size:12px;color:#9ca3af}.bmxcb__message-time--user{text-align:right}.bmxcb__input{flex:1;color:var(--bmx-color-text);background:var(--bmx-color-input-bg);border:1px solid var(--bmx-color-border);border-radius:8px;padding:10px 10px;resize:none;font-family:var(--bmx-font-family);font-size:16px;font-weight:400;line-height:12px}.bmxcb__input:focus{outline:none;border-color:var(--bmx-color-accent);box-shadow:0 0 0 2px rgba(1,83,255,.2)}.bmxcb__inputRow{padding:10px;border-top:1px solid var(--bmx-color-border);background:var(--bmx-color-panel);display:flex;align-items:center;gap:8px}.bmxcb__send{background:var(--bmx-color-accent);color:#fff;padding:8px;border-radius:8px;cursor:pointer;border:none;display:flex;align-items:center;justify-content:center;min-width:36px;height:36px;line-height:10px}.bmxcb__send:disabled{cursor:not-allowed;opacity:.6}.bmxcb__close{cursor:pointer;color:var(--bmx-color-text);padding:6px;background:none;border:none;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease}.bmxcb__close:hover{background-color:hsla(0,0%,100%,.1)}.bmxcb__header-actions{display:flex;align-items:center;gap:4px}.bmxcb__settings-button{cursor:pointer;color:var(--bmx-color-text);padding:6px;background:none;border:none;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease}.bmxcb__settings-button:hover{background-color:hsla(0,0%,100%,.1)}.bmxcb__settings-panel{flex:1;display:flex;flex-direction:column;overflow:hidden}.bmxcb__settings-header{display:flex;align-items:center;justify-content:space-between;padding:6px 24px;border-bottom:1px solid var(--bmx-color-border);background:var(--bmx-color-panel);height:45px}.bmxcb__settings-title{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--bmx-color-title);font-size:16px}.bmxcb__settings-close{cursor:pointer;color:var(--bmx-color-text);padding:6px;background:none;border:none;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease}.bmxcb__settings-close:hover{background-color:hsla(0,0%,100%,.1)}.bmxcb__settings-content{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:24px;justify-content:space-between}.bmxcb__settings-section{display:flex;flex-direction:column;gap:16px}.bmxcb__settings-section-title{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--bmx-color-title);font-size:14px;margin:0}.bmxcb__settings-group{display:flex;flex-direction:column;gap:8px}.bmxcb__settings-label{font-size:14px;color:var(--bmx-color-text);font-weight:500}.bmxcb__settings-slider{width:100%;height:6px;border-radius:3px;background:var(--bmx-color-border);outline:none;cursor:pointer;appearance:none}.bmxcb__settings-slider::-webkit-slider-thumb{appearance:none;width:18px;height:18px;border-radius:50%;background:var(--bmx-color-accent);cursor:pointer;border:2px solid var(--bmx-color-bg);box-shadow:0 2px 4px rgba(0,0,0,.2)}.bmxcb__settings-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--bmx-color-accent);cursor:pointer;border:2px solid var(--bmx-color-bg);box-shadow:0 2px 4px rgba(0,0,0,.2)}.bmxcb__settings-checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:14px;color:var(--bmx-color-text)}.bmxcb__settings-checkbox{width:16px;height:16px;accent-color:var(--bmx-color-accent);cursor:pointer}.bmxcb__settings-clear-button{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 16px;background:#dc2626;color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:16px;font-weight:500;line-height:10px;transition:all .2s ease;font-family:var(--bmx-font-family)}.bmxcb__settings-clear-button:hover{background:#b91c1c;transform:translateY(-1px)}.bmxcb__settings-clear-button:active{transform:translateY(0)}.bmxcb__markdown{line-height:1.4;color:inherit;font-size:inherit;font-family:inherit;position:relative;z-index:1}.bmxcb__markdown h1,.bmxcb__markdown h2,.bmxcb__markdown h3,.bmxcb__markdown h4,.bmxcb__markdown h5,.bmxcb__markdown h6{margin:.5em 0 .25em 0;font-weight:600;line-height:1.2;color:var(--bmx-color-text)}.bmxcb__markdown h1{font-size:1.2em}.bmxcb__markdown h2{font-size:1.15em}.bmxcb__markdown h3{font-size:1.1em}.bmxcb__markdown h4,.bmxcb__markdown h5,.bmxcb__markdown h6{font-size:1.05em}.bmxcb__markdown p{margin:.4em 0;line-height:1.4}.bmxcb__markdown ul,.bmxcb__markdown ol{margin:.5em 0;padding-left:1.2em}.bmxcb__markdown li{margin:.2em 0;line-height:1.4}.bmxcb__markdown pre{background:rgba(0,0,0,.05);border:1px solid var(--bmx-color-border);border-radius:6px;padding:.75em;margin:.75em 0;overflow-x:auto;font-family:"Monaco","Menlo","Ubuntu Mono",monospace;font-size:.85em;line-height:1.3}.bmxcb__markdown code{background:rgba(0,0,0,.05);border:1px solid var(--bmx-color-border);border-radius:3px;padding:.15em .3em;font-family:"Monaco","Menlo","Ubuntu Mono",monospace;font-size:.85em;color:var(--bmx-color-accent)}.bmxcb__markdown pre code{background:none;border:none;padding:0;color:inherit}.bmxcb__markdown blockquote{margin:.75em 0;padding:.5em .75em;border-left:3px solid var(--bmx-color-accent);background:rgba(0,0,0,.02);border-radius:0 4px 4px 0;font-style:italic}.bmxcb__markdown table{width:100%;border-collapse:collapse;margin:.75em 0;border:1px solid var(--bmx-color-border);border-radius:6px;overflow:hidden}.bmxcb__markdown th,.bmxcb__markdown td{padding:.5em .75em;text-align:left;border-bottom:1px solid var(--bmx-color-border)}.bmxcb__markdown th{background:rgba(0,0,0,.02);font-weight:600}.bmxcb__markdown tr:last-child td{border-bottom:none}.bmxcb__markdown a{color:var(--bmx-color-accent);text-decoration:none;border-bottom:1px solid rgba(0,0,0,0);transition:border-color .2s ease}.bmxcb__markdown a:hover{border-bottom-color:var(--bmx-color-accent)}.bmxcb__markdown hr{border:none;height:1px;background:var(--bmx-color-border);margin:1em 0}.bmxcb__markdown strong{font-weight:600}.bmxcb__markdown em{font-style:italic}.bmxcb__markdown input[type=checkbox]{margin-right:.5em;accent-color:var(--bmx-color-accent)}.bmxcb__markdown .hljs{background:rgba(0,0,0,0) !important}
|
1
|
+
.orb-container{position:relative;z-index:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.orb-container canvas{display:block;width:100% !important;height:100% !important;object-fit:contain}.iridescence-container{width:100%;height:100%}[data-bmx-chat-bot-root]{--bmx-font-family: "Darker Grotesque", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, Helvetica Neue, Arial, sans-serif;--bmx-color-accent: #0153ff;--bmx-color-bg: #060911;--bmx-color-panel: #090d18;--bmx-color-border: #1f2937;--bmx-color-text: #e5e7eb;--bmx-color-title: #f3f4f6;--bmx-color-button-bg: #111827;--bmx-color-user-bubble: #1d4ed8;--bmx-color-input-bg: #0b1220}.bmxcb{font-family:var(--bmx-font-family)}.bmxcb__button{cursor:pointer;width:56px;height:56px;border-radius:28px;background:var(--bmx-color-button-bg);color:#fff;border:1px solid var(--bmx-color-bg);box-shadow:0 8px 24px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center}.bmxcb__orb-button{cursor:pointer;width:60px;height:60px;border:none;border-radius:50%;padding:0;overflow:hidden;background:rgba(0,0,0,0);position:relative;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(0,0,0,.3)}.bmxcb__orb-button .orb-container{width:100%;height:100%;position:relative;display:flex;align-items:center;justify-content:center}.bmxcb__orb-button .orb-container canvas{width:100% !important;height:100% !important;display:block !important;object-fit:contain;border-radius:50%}.bmxcb__panel{position:absolute;right:0;bottom:64px;width:360px;max-width:calc(100vw - 32px);max-height:70vh;min-height:400px;background:var(--bmx-color-bg);color:var(--bmx-color-text);border:1px solid var(--bmx-color-border);border-radius:12px;overflow:hidden;box-shadow:0 16px 48px rgba(0,0,0,.4);display:flex;flex-direction:column}.bmxcb__header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;font-weight:600;background:var(--bmx-color-panel);color:var(--bmx-color-title);height:45px}.bmxcb__header-brand{display:flex;align-items:center;gap:8px}.bmxcb__header-logo{height:18px;width:auto;object-fit:contain}.bmxcb__header-title{font-size:14px;font-weight:600;color:var(--bmx-color-title)}.bmxcb__messages{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px;scroll-behavior:smooth;max-height:400px;position:relative}.bmxcb__messages--empty{padding:0}.bmxcb__messages::-webkit-scrollbar{width:6px}.bmxcb__messages::-webkit-scrollbar-track{background:rgba(0,0,0,0)}.bmxcb__messages::-webkit-scrollbar-thumb{background:var(--bmx-color-border);border-radius:3px}.bmxcb__messages::-webkit-scrollbar-thumb:hover{background:var(--bmx-color-text)}.bmxcb__empty-state{display:flex;align-items:center;justify-content:center;height:100%;min-height:300px;padding:20px;text-align:center;position:relative}.bmxcb__empty-state::before{position:absolute;top:0;left:0;width:100%;height:100%;content:"";box-shadow:-11px 13px 20px rgba(0,0,0,.15);-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:radial-gradient(55.05% 82.01% at -1.19% -1.92%, rgba(1, 83, 255, 0.6) 0%, rgba(0, 0, 0, 0.2) 100%);pointer-events:none;z-index:0}.bmxcb__empty-state-content{max-width:280px;display:flex;flex-direction:column;align-items:center;gap:16px;position:relative;z-index:1}.bmxcb__empty-state-title{font-size:18px;font-weight:600;color:var(--bmx-color-text);margin:0}.bmxcb__empty-state-description{font-size:14px;color:var(--bmx-color-text-muted);margin:0;line-height:1.4}.bmxcb__empty-state-suggestions{display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:8px}.bmxcb__empty-state-suggestion{font-size:12px;color:var(--bmx-color-text-muted);font-weight:500}.bmxcb__empty-state-suggestion-chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.bmxcb__empty-state-chip{background:var(--bmx-color-bg-light);color:var(--bmx-color-text);padding:6px 12px;border-radius:16px;font-size:12px;font-weight:500;border:1px solid var(--bmx-color-border);cursor:pointer;transition:all .2s ease}.bmxcb__empty-state-chip:hover{background:var(--bmx-color-accent);color:#fff;transform:translateY(-1px)}.bmxcb__scroll-to-bottom{position:sticky;bottom:12px;width:32px;height:32px;border-radius:50%;background:var(--bmx-color-accent);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;box-shadow:0 2px 8px rgba(0,0,0,.2);transition:all .2s ease;z-index:10;margin:0 auto;margin-top:auto;flex-shrink:0}.bmxcb__scroll-to-bottom:hover{background:#0041cc;transform:scale(1.1)}.bmxcb__message{margin:8px 0}.bmxcb__message--user{display:flex;justify-content:flex-end;align-self:flex-end;max-width:80%}.bmxcb__message--assistant{display:flex;align-items:flex-start;gap:12px;justify-content:flex-start;align-self:flex-start;max-width:100%}.bmxcb__message-avatar{flex-shrink:0;margin-top:4px}.bmxcb__avatar{width:32px;height:32px;border-radius:50%;background:var(--bmx-color-accent);display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(0,0,0,.1);overflow:hidden;border:.5px solid var(--bmx-color-border)}.bmxcb__avatar-icon{font-size:16px;line-height:1}.bmxcb__message-content{min-width:0;position:relative}.bmxcb__typing{display:inline-flex;align-items:center;gap:4px;background:var(--bmx-color-panel);border:1px solid var(--bmx-color-border);border-radius:12px;padding:6px 10px}.bmxcb__dot{width:6px;height:6px;border-radius:50%;background:var(--bmx-color-text);opacity:.4}.bmxcb__message-text{padding:6px 10px;border-radius:10px;font-size:15px;line-height:1.4;word-wrap:break-word;overflow-wrap:break-word;background:var(--bmx-color-accent);color:#fff;text-align:right;display:inline-block;max-width:100%;min-width:0}.bmxcb__message-time{margin-top:4px;font-size:12px;color:#9ca3af}.bmxcb__message-time--user{text-align:right}.bmxcb__input{flex:1;color:var(--bmx-color-text);background:var(--bmx-color-input-bg);border:1px solid var(--bmx-color-border);border-radius:8px;padding:10px 10px;resize:none;font-family:var(--bmx-font-family);font-size:16px;font-weight:400;line-height:12px}.bmxcb__input:focus{outline:none;border-color:var(--bmx-color-accent);box-shadow:0 0 0 2px rgba(1,83,255,.2)}.bmxcb__inputRow{padding:10px;border-top:1px solid var(--bmx-color-border);background:var(--bmx-color-panel);display:flex;align-items:center;gap:8px}.bmxcb__send{background:var(--bmx-color-accent);color:#fff;padding:8px;border-radius:8px;cursor:pointer;border:none;display:flex;align-items:center;justify-content:center;min-width:36px;height:36px;line-height:10px}.bmxcb__send:disabled{cursor:not-allowed;opacity:.6}.bmxcb__close{cursor:pointer;color:var(--bmx-color-text);padding:6px;background:none;border:none;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease}.bmxcb__close:hover{background-color:hsla(0,0%,100%,.1)}.bmxcb__header-actions{display:flex;align-items:center;gap:4px}.bmxcb__settings-button{cursor:pointer;color:var(--bmx-color-text);padding:6px;background:none;border:none;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease}.bmxcb__settings-button:hover{background-color:hsla(0,0%,100%,.1)}.bmxcb__settings-panel{flex:1;display:flex;flex-direction:column;overflow:hidden}.bmxcb__settings-header{display:flex;align-items:center;justify-content:space-between;padding:6px 24px;border-bottom:1px solid var(--bmx-color-border);background:var(--bmx-color-panel);height:45px}.bmxcb__settings-title{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--bmx-color-title);font-size:16px}.bmxcb__settings-close{cursor:pointer;color:var(--bmx-color-text);padding:6px;background:none;border:none;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease}.bmxcb__settings-close:hover{background-color:hsla(0,0%,100%,.1)}.bmxcb__settings-content{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:24px;justify-content:space-between}.bmxcb__settings-section{display:flex;flex-direction:column;gap:16px}.bmxcb__settings-section-title{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--bmx-color-title);font-size:14px;margin:0}.bmxcb__settings-group{display:flex;flex-direction:column;gap:8px}.bmxcb__settings-label{font-size:14px;color:var(--bmx-color-text);font-weight:500}.bmxcb__settings-slider{width:100%;height:6px;border-radius:3px;background:var(--bmx-color-border);outline:none;cursor:pointer;appearance:none}.bmxcb__settings-slider::-webkit-slider-thumb{appearance:none;width:18px;height:18px;border-radius:50%;background:var(--bmx-color-accent);cursor:pointer;border:2px solid var(--bmx-color-bg);box-shadow:0 2px 4px rgba(0,0,0,.2)}.bmxcb__settings-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--bmx-color-accent);cursor:pointer;border:2px solid var(--bmx-color-bg);box-shadow:0 2px 4px rgba(0,0,0,.2)}.bmxcb__settings-checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:14px;color:var(--bmx-color-text)}.bmxcb__settings-checkbox{width:16px;height:16px;accent-color:var(--bmx-color-accent);cursor:pointer}.bmxcb__settings-clear-button{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 16px;background:#dc2626;color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:16px;font-weight:500;line-height:10px;transition:all .2s ease;font-family:var(--bmx-font-family)}.bmxcb__settings-clear-button:hover{background:#b91c1c;transform:translateY(-1px)}.bmxcb__settings-clear-button:active{transform:translateY(0)}.bmxcb__markdown{line-height:1.4;color:inherit;font-size:inherit;font-family:inherit;position:relative;z-index:1}.bmxcb__markdown h1,.bmxcb__markdown h2,.bmxcb__markdown h3,.bmxcb__markdown h4,.bmxcb__markdown h5,.bmxcb__markdown h6{margin:.5em 0 .25em 0;font-weight:600;line-height:1.2;color:var(--bmx-color-text)}.bmxcb__markdown h1{font-size:1.2em}.bmxcb__markdown h2{font-size:1.15em}.bmxcb__markdown h3{font-size:1.1em}.bmxcb__markdown h4,.bmxcb__markdown h5,.bmxcb__markdown h6{font-size:1.05em}.bmxcb__markdown p{margin:.4em 0;line-height:1.4}.bmxcb__markdown ul,.bmxcb__markdown ol{margin:.5em 0;padding-left:1.2em}.bmxcb__markdown li{margin:.2em 0;line-height:1.4}.bmxcb__markdown pre{background:rgba(0,0,0,.05);border:1px solid var(--bmx-color-border);border-radius:6px;padding:.75em;margin:.75em 0;overflow-x:auto;font-family:"Monaco","Menlo","Ubuntu Mono",monospace;font-size:.85em;line-height:1.3}.bmxcb__markdown code{background:rgba(0,0,0,.05);border:1px solid var(--bmx-color-border);border-radius:3px;padding:.15em .3em;font-family:"Monaco","Menlo","Ubuntu Mono",monospace;font-size:.85em;color:var(--bmx-color-accent)}.bmxcb__markdown pre code{background:none;border:none;padding:0;color:inherit}.bmxcb__markdown blockquote{margin:.75em 0;padding:.5em .75em;border-left:3px solid var(--bmx-color-accent);background:rgba(0,0,0,.02);border-radius:0 4px 4px 0;font-style:italic}.bmxcb__markdown table{width:100%;border-collapse:collapse;margin:.75em 0;border:1px solid var(--bmx-color-border);border-radius:6px;overflow:hidden}.bmxcb__markdown th,.bmxcb__markdown td{padding:.5em .75em;text-align:left;border-bottom:1px solid var(--bmx-color-border)}.bmxcb__markdown th{background:rgba(0,0,0,.02);font-weight:600}.bmxcb__markdown tr:last-child td{border-bottom:none}.bmxcb__markdown a{color:var(--bmx-color-accent);text-decoration:none;border-bottom:1px solid rgba(0,0,0,0);transition:border-color .2s ease}.bmxcb__markdown a:hover{border-bottom-color:var(--bmx-color-accent)}.bmxcb__markdown hr{border:none;height:1px;background:var(--bmx-color-border);margin:1em 0}.bmxcb__markdown strong{font-weight:600}.bmxcb__markdown em{font-style:italic}.bmxcb__markdown input[type=checkbox]{margin-right:.5em;accent-color:var(--bmx-color-accent)}.bmxcb__markdown .hljs{background:rgba(0,0,0,0) !important}
|
package/dist/types.d.ts
CHANGED
@@ -28,3 +28,74 @@ export interface SendOptions {
|
|
28
28
|
export interface BmxChatApiAdapter {
|
29
29
|
sendMessage: (history: ChatMessage[], input: string, options?: SendOptions) => Promise<ChatMessage>;
|
30
30
|
}
|
31
|
+
/**
|
32
|
+
* Pinecone RAG Adapter Configuration.
|
33
|
+
*/
|
34
|
+
export interface PineconeRAGAdapterConfig {
|
35
|
+
openAIApiKey: string;
|
36
|
+
pineconeApiKey: string;
|
37
|
+
/** Example: https://myindex-abc123.svc.us-east1-aws.pinecone.io */
|
38
|
+
pineconeIndexUrl: string;
|
39
|
+
namespace?: string;
|
40
|
+
topK?: number;
|
41
|
+
chatModel?: OpenAIModel;
|
42
|
+
embeddingModel?: string;
|
43
|
+
openAIBaseURL?: string;
|
44
|
+
enableStreaming?: boolean;
|
45
|
+
maxContextTokens?: number;
|
46
|
+
minScoreThreshold?: number;
|
47
|
+
debug?: boolean;
|
48
|
+
/**
|
49
|
+
* Optional dynamic context provider for live data (e.g., token prices).
|
50
|
+
* Return blocks that will be appended to retrieved context before prompting.
|
51
|
+
*/
|
52
|
+
dynamicContext?: (input: string, options?: {
|
53
|
+
signal?: AbortSignal;
|
54
|
+
}) => Promise<Array<{
|
55
|
+
title?: string;
|
56
|
+
url?: string;
|
57
|
+
text: string;
|
58
|
+
}>>;
|
59
|
+
}
|
60
|
+
export type OpenAIEmbeddingResponse = {
|
61
|
+
data: Array<{
|
62
|
+
embedding: number[];
|
63
|
+
}>;
|
64
|
+
};
|
65
|
+
export type PineconeQueryMatch = {
|
66
|
+
id: string;
|
67
|
+
score?: number;
|
68
|
+
metadata?: Record<string, unknown>;
|
69
|
+
};
|
70
|
+
export type OpenAIModel = "gpt-4o-mini" | "gpt-4o" | "gpt-4-turbo" | "gpt-3.5-turbo" | "gpt-4" | "gpt-4.1" | "gpt-4.1-mini" | "o1-mini" | "o1-preview";
|
71
|
+
/**
|
72
|
+
* Typed shape for the subset of OpenAI's Chat Completions response we use.
|
73
|
+
*/
|
74
|
+
export type OpenAIChatCompletionResponse = {
|
75
|
+
choices: Array<{
|
76
|
+
message?: {
|
77
|
+
role?: string;
|
78
|
+
content?: string;
|
79
|
+
};
|
80
|
+
}>;
|
81
|
+
};
|
82
|
+
/**
|
83
|
+
* Lightweight typed result returned by getChatCompletion.
|
84
|
+
*/
|
85
|
+
export type ChatCompletionResult = {
|
86
|
+
content: string;
|
87
|
+
};
|
88
|
+
/**
|
89
|
+
* Rest adapter configuration.
|
90
|
+
*/
|
91
|
+
export interface RestAdapterConfig {
|
92
|
+
baseUrl: string;
|
93
|
+
/**
|
94
|
+
* The endpoint to call.
|
95
|
+
*/
|
96
|
+
endpoint?: string;
|
97
|
+
/**
|
98
|
+
* The headers to send.
|
99
|
+
*/
|
100
|
+
headers?: Record<string, string>;
|
101
|
+
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@bmx-labs/chat-widget",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.3",
|
4
4
|
"private": false,
|
5
5
|
"description": "BMX Chat Widget for React/Next.js with RAG capabilities",
|
6
6
|
"license": "GNU AGPLv3",
|
@@ -60,6 +60,13 @@
|
|
60
60
|
"webpack": "^5.95.0",
|
61
61
|
"webpack-cli": "^5.1.4"
|
62
62
|
},
|
63
|
+
"scripts": {
|
64
|
+
"build": "webpack --config webpack.config.js --mode=production",
|
65
|
+
"build:dev": "webpack --config webpack.config.js --mode=development",
|
66
|
+
"dev": "webpack --config webpack.config.js --mode=development --watch",
|
67
|
+
"clean": "rm -rf dist",
|
68
|
+
"prepublishOnly": "npm run build"
|
69
|
+
},
|
63
70
|
"keywords": [
|
64
71
|
"chat-widget",
|
65
72
|
"react",
|
@@ -68,11 +75,5 @@
|
|
68
75
|
"rag",
|
69
76
|
"pinecone",
|
70
77
|
"bmx"
|
71
|
-
]
|
72
|
-
|
73
|
-
"build": "webpack --config webpack.config.js --mode=production",
|
74
|
-
"build:dev": "webpack --config webpack.config.js --mode=development",
|
75
|
-
"dev": "webpack --config webpack.config.js --mode=development --watch",
|
76
|
-
"clean": "rm -rf dist"
|
77
|
-
}
|
78
|
-
}
|
78
|
+
]
|
79
|
+
}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
import type { BmxChatApiAdapter, ChatMessage } from "../types";
|
2
|
-
interface AnthropicAdapterConfig {
|
3
|
-
apiKey: string;
|
4
|
-
model?: string;
|
5
|
-
baseURL?: string;
|
6
|
-
}
|
7
|
-
export declare class AnthropicAdapter implements BmxChatApiAdapter {
|
8
|
-
private apiKey;
|
9
|
-
private model;
|
10
|
-
private baseURL;
|
11
|
-
constructor(config: AnthropicAdapterConfig);
|
12
|
-
sendMessage(history: ChatMessage[], input: string, options?: {
|
13
|
-
signal?: AbortSignal;
|
14
|
-
}): Promise<ChatMessage>;
|
15
|
-
}
|
16
|
-
export {};
|
@@ -1,19 +0,0 @@
|
|
1
|
-
import type { BmxChatApiAdapter, ChatMessage } from "../types";
|
2
|
-
export interface ContextAdapterConfig {
|
3
|
-
apiKey: string;
|
4
|
-
model?: string;
|
5
|
-
baseURL?: string;
|
6
|
-
contextData?: string;
|
7
|
-
contextPrompt?: string;
|
8
|
-
}
|
9
|
-
export declare class ContextAdapter implements BmxChatApiAdapter {
|
10
|
-
private apiKey;
|
11
|
-
private model;
|
12
|
-
private baseURL;
|
13
|
-
private contextData;
|
14
|
-
private contextPrompt;
|
15
|
-
constructor(config: ContextAdapterConfig);
|
16
|
-
sendMessage(history: ChatMessage[], input: string, options?: {
|
17
|
-
signal?: AbortSignal;
|
18
|
-
}): Promise<ChatMessage>;
|
19
|
-
}
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import type { BmxChatApiAdapter, ChatMessage } from "../types";
|
2
|
-
interface CustomAPIAdapterConfig {
|
3
|
-
endpoint: string;
|
4
|
-
apiKey?: string;
|
5
|
-
headers?: Record<string, string>;
|
6
|
-
transformRequest?: (history: ChatMessage[], input: string) => any;
|
7
|
-
transformResponse?: (response: any) => string;
|
8
|
-
}
|
9
|
-
export declare class CustomAPIAdapter implements BmxChatApiAdapter {
|
10
|
-
private endpoint;
|
11
|
-
private apiKey?;
|
12
|
-
private headers;
|
13
|
-
private transformRequest;
|
14
|
-
private transformResponse;
|
15
|
-
constructor(config: CustomAPIAdapterConfig);
|
16
|
-
sendMessage(history: ChatMessage[], input: string, options?: {
|
17
|
-
signal?: AbortSignal;
|
18
|
-
}): Promise<ChatMessage>;
|
19
|
-
}
|
20
|
-
export {};
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import type { BmxChatApiAdapter, ChatMessage } from "../types";
|
2
|
-
export interface KnowledgeBaseAdapterConfig {
|
3
|
-
apiKey: string;
|
4
|
-
model?: string;
|
5
|
-
baseURL?: string;
|
6
|
-
knowledgeBase: Record<string, string>;
|
7
|
-
maxContextLength?: number;
|
8
|
-
}
|
9
|
-
export declare class KnowledgeBaseAdapter implements BmxChatApiAdapter {
|
10
|
-
private apiKey;
|
11
|
-
private model;
|
12
|
-
private baseURL;
|
13
|
-
private knowledgeBase;
|
14
|
-
private maxContextLength;
|
15
|
-
constructor(config: KnowledgeBaseAdapterConfig);
|
16
|
-
private findRelevantKnowledge;
|
17
|
-
sendMessage(history: ChatMessage[], input: string, options?: {
|
18
|
-
signal?: AbortSignal;
|
19
|
-
}): Promise<ChatMessage>;
|
20
|
-
}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
import type { BmxChatApiAdapter, ChatMessage } from "../types";
|
2
|
-
export type OpenAIModel = "gpt-4o-mini" | "gpt-4o" | "gpt-4-turbo" | "gpt-3.5-turbo" | "gpt-4" | "o1-mini" | "o1-preview";
|
3
|
-
export interface MorphexAdapterConfig {
|
4
|
-
apiKey: string;
|
5
|
-
model?: OpenAIModel;
|
6
|
-
baseURL?: string;
|
7
|
-
}
|
8
|
-
export declare class MorphexAdapter implements BmxChatApiAdapter {
|
9
|
-
private apiKey;
|
10
|
-
private model;
|
11
|
-
private baseURL;
|
12
|
-
constructor(config: MorphexAdapterConfig);
|
13
|
-
sendMessage(history: ChatMessage[], input: string, options?: {
|
14
|
-
signal?: AbortSignal;
|
15
|
-
}): Promise<ChatMessage>;
|
16
|
-
}
|
@@ -1,17 +0,0 @@
|
|
1
|
-
import type { BmxChatApiAdapter, ChatMessage } from "../types";
|
2
|
-
export type OpenAIModel = "gpt-4o-mini" | "gpt-4o" | "gpt-4-turbo" | "gpt-3.5-turbo" | "gpt-4" | "o1-mini" | "o1-preview";
|
3
|
-
interface OpenAIAdapterConfig {
|
4
|
-
apiKey: string;
|
5
|
-
model?: OpenAIModel;
|
6
|
-
baseURL?: string;
|
7
|
-
}
|
8
|
-
export declare class OpenAIAdapter implements BmxChatApiAdapter {
|
9
|
-
private apiKey;
|
10
|
-
private model;
|
11
|
-
private baseURL;
|
12
|
-
constructor(config: OpenAIAdapterConfig);
|
13
|
-
sendMessage(history: ChatMessage[], input: string, options?: {
|
14
|
-
signal?: AbortSignal;
|
15
|
-
}): Promise<ChatMessage>;
|
16
|
-
}
|
17
|
-
export {};
|
@@ -1,29 +0,0 @@
|
|
1
|
-
import type { BmxChatApiAdapter, ChatMessage } from "../types";
|
2
|
-
export interface Document {
|
3
|
-
id: string;
|
4
|
-
content: string;
|
5
|
-
metadata?: Record<string, any>;
|
6
|
-
}
|
7
|
-
export interface RAGAdapterConfig {
|
8
|
-
apiKey: string;
|
9
|
-
model?: string;
|
10
|
-
baseURL?: string;
|
11
|
-
documents: Document[];
|
12
|
-
chunkSize?: number;
|
13
|
-
topK?: number;
|
14
|
-
}
|
15
|
-
export declare class RAGAdapter implements BmxChatApiAdapter {
|
16
|
-
private apiKey;
|
17
|
-
private model;
|
18
|
-
private baseURL;
|
19
|
-
private documents;
|
20
|
-
private chunkSize;
|
21
|
-
private topK;
|
22
|
-
constructor(config: RAGAdapterConfig);
|
23
|
-
private chunkText;
|
24
|
-
private simpleSimilarity;
|
25
|
-
private retrieveRelevantChunks;
|
26
|
-
sendMessage(history: ChatMessage[], input: string, options?: {
|
27
|
-
signal?: AbortSignal;
|
28
|
-
}): Promise<ChatMessage>;
|
29
|
-
}
|
@@ -1,9 +0,0 @@
|
|
1
|
-
import type { BmxChatApiAdapter, ChatMessage } from "../types";
|
2
|
-
export interface RestRAGAdapterConfig {
|
3
|
-
baseURL?: string;
|
4
|
-
}
|
5
|
-
export declare class RestRAGAdapter implements BmxChatApiAdapter {
|
6
|
-
private baseURL;
|
7
|
-
constructor(config?: RestRAGAdapterConfig);
|
8
|
-
sendMessage(history: ChatMessage[], input: string): Promise<ChatMessage>;
|
9
|
-
}
|
@@ -1,19 +0,0 @@
|
|
1
|
-
import type { BmxChatApiAdapter, ChatMessage } from "../../types";
|
2
|
-
export interface ContextAdapterConfig {
|
3
|
-
apiKey: string;
|
4
|
-
model?: string;
|
5
|
-
baseURL?: string;
|
6
|
-
contextData?: string;
|
7
|
-
contextPrompt?: string;
|
8
|
-
}
|
9
|
-
export declare class ContextAdapter implements BmxChatApiAdapter {
|
10
|
-
private apiKey;
|
11
|
-
private model;
|
12
|
-
private baseURL;
|
13
|
-
private contextData;
|
14
|
-
private contextPrompt;
|
15
|
-
constructor(config: ContextAdapterConfig);
|
16
|
-
sendMessage(history: ChatMessage[], input: string, options?: {
|
17
|
-
signal?: AbortSignal;
|
18
|
-
}): Promise<ChatMessage>;
|
19
|
-
}
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import type { BmxChatApiAdapter, ChatMessage } from "../../types";
|
2
|
-
export interface KnowledgeBaseAdapterConfig {
|
3
|
-
apiKey: string;
|
4
|
-
model?: string;
|
5
|
-
baseURL?: string;
|
6
|
-
knowledgeBase: Record<string, string>;
|
7
|
-
maxContextLength?: number;
|
8
|
-
}
|
9
|
-
export declare class KnowledgeBaseAdapter implements BmxChatApiAdapter {
|
10
|
-
private apiKey;
|
11
|
-
private model;
|
12
|
-
private baseURL;
|
13
|
-
private knowledgeBase;
|
14
|
-
private maxContextLength;
|
15
|
-
constructor(config: KnowledgeBaseAdapterConfig);
|
16
|
-
private findRelevantKnowledge;
|
17
|
-
sendMessage(history: ChatMessage[], input: string, options?: {
|
18
|
-
signal?: AbortSignal;
|
19
|
-
}): Promise<ChatMessage>;
|
20
|
-
}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
import type { BmxChatApiAdapter, ChatMessage } from "../../types";
|
2
|
-
export type OpenAIModel = "gpt-4o-mini" | "gpt-4o" | "gpt-4-turbo" | "gpt-3.5-turbo" | "gpt-4" | "o1-mini" | "o1-preview";
|
3
|
-
export interface MorphexAdapterConfig {
|
4
|
-
apiKey: string;
|
5
|
-
model?: OpenAIModel;
|
6
|
-
baseURL?: string;
|
7
|
-
}
|
8
|
-
export declare class MorphexAdapter implements BmxChatApiAdapter {
|
9
|
-
private apiKey;
|
10
|
-
private model;
|
11
|
-
private baseURL;
|
12
|
-
constructor(config: MorphexAdapterConfig);
|
13
|
-
sendMessage(history: ChatMessage[], input: string, options?: {
|
14
|
-
signal?: AbortSignal;
|
15
|
-
}): Promise<ChatMessage>;
|
16
|
-
}
|
@@ -1,40 +0,0 @@
|
|
1
|
-
import type { BmxChatApiAdapter, ChatMessage } from "../../types";
|
2
|
-
export interface PineconeRAGAdapterConfig {
|
3
|
-
openAIApiKey: string;
|
4
|
-
pineconeApiKey: string;
|
5
|
-
/** Example: https://myindex-abc123.svc.us-east1-aws.pinecone.io */
|
6
|
-
pineconeIndexUrl: string;
|
7
|
-
namespace?: string;
|
8
|
-
topK?: number;
|
9
|
-
chatModel?: string;
|
10
|
-
embeddingModel?: string;
|
11
|
-
openAIBaseURL?: string;
|
12
|
-
enableStreaming?: boolean;
|
13
|
-
maxContextTokens?: number;
|
14
|
-
minScoreThreshold?: number;
|
15
|
-
debug?: boolean;
|
16
|
-
}
|
17
|
-
export declare class PineconeRAGAdapter implements BmxChatApiAdapter {
|
18
|
-
private openAIApiKey;
|
19
|
-
private pineconeApiKey;
|
20
|
-
private pineconeIndexUrl;
|
21
|
-
private namespace;
|
22
|
-
private topK;
|
23
|
-
private chatModel;
|
24
|
-
private embeddingModel;
|
25
|
-
private openAIBaseURL;
|
26
|
-
private enableStreaming;
|
27
|
-
private maxContextTokens;
|
28
|
-
private minScoreThreshold;
|
29
|
-
private logger;
|
30
|
-
constructor(cfg: PineconeRAGAdapterConfig);
|
31
|
-
private embed;
|
32
|
-
private queryPinecone;
|
33
|
-
private preprocessQuery;
|
34
|
-
private estimateTokens;
|
35
|
-
private truncateContext;
|
36
|
-
private buildSystemPrompt;
|
37
|
-
sendMessage(history: ChatMessage[], input: string, options?: {
|
38
|
-
signal?: AbortSignal;
|
39
|
-
}): Promise<ChatMessage>;
|
40
|
-
}
|
@@ -1,29 +0,0 @@
|
|
1
|
-
import type { BmxChatApiAdapter, ChatMessage } from "../../types";
|
2
|
-
export interface Document {
|
3
|
-
id: string;
|
4
|
-
content: string;
|
5
|
-
metadata?: Record<string, any>;
|
6
|
-
}
|
7
|
-
export interface RAGAdapterConfig {
|
8
|
-
apiKey: string;
|
9
|
-
model?: string;
|
10
|
-
baseURL?: string;
|
11
|
-
documents: Document[];
|
12
|
-
chunkSize?: number;
|
13
|
-
topK?: number;
|
14
|
-
}
|
15
|
-
export declare class RAGAdapter implements BmxChatApiAdapter {
|
16
|
-
private apiKey;
|
17
|
-
private model;
|
18
|
-
private baseURL;
|
19
|
-
private documents;
|
20
|
-
private chunkSize;
|
21
|
-
private topK;
|
22
|
-
constructor(config: RAGAdapterConfig);
|
23
|
-
private chunkText;
|
24
|
-
private simpleSimilarity;
|
25
|
-
private retrieveRelevantChunks;
|
26
|
-
sendMessage(history: ChatMessage[], input: string, options?: {
|
27
|
-
signal?: AbortSignal;
|
28
|
-
}): Promise<ChatMessage>;
|
29
|
-
}
|
package/dist/adapters/rest.d.ts
DELETED
@@ -1,3 +0,0 @@
|
|
1
|
-
export declare const LazyOrb: import("react").LazyExoticComponent<typeof import("./ogl/Orb").default>;
|
2
|
-
export declare const LazyIridescence: import("react").LazyExoticComponent<typeof import("./ogl/Iridescence").default>;
|
3
|
-
export declare const LazyReactMarkdown: import("react").LazyExoticComponent<typeof import("react-markdown").default>;
|
package/dist/components/Orb.d.ts
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
interface OrbProps {
|
2
|
-
hue?: number;
|
3
|
-
hoverIntensity?: number;
|
4
|
-
rotateOnHover?: boolean;
|
5
|
-
forceHoverState?: boolean;
|
6
|
-
}
|
7
|
-
export default function Orb({ hue, hoverIntensity, rotateOnHover, forceHoverState, }: OrbProps): import("react/jsx-runtime").JSX.Element;
|
8
|
-
export {};
|
@@ -1,10 +0,0 @@
|
|
1
|
-
interface OrbButtonProps {
|
2
|
-
open: boolean;
|
3
|
-
onClick: () => void;
|
4
|
-
hue?: number;
|
5
|
-
hoverIntensity?: number;
|
6
|
-
rotateOnHover?: boolean;
|
7
|
-
forceHoverState?: boolean;
|
8
|
-
}
|
9
|
-
export declare function OrbButton({ open, onClick, hue, hoverIntensity, rotateOnHover, forceHoverState, }: OrbButtonProps): import("react/jsx-runtime").JSX.Element;
|
10
|
-
export {};
|
@@ -1,8 +0,0 @@
|
|
1
|
-
interface SimpleIridescenceProps {
|
2
|
-
color?: [number, number, number];
|
3
|
-
mouseReact?: boolean;
|
4
|
-
amplitude?: number;
|
5
|
-
speed?: number;
|
6
|
-
}
|
7
|
-
export declare function SimpleIridescence({ color, mouseReact, amplitude, speed, }: SimpleIridescenceProps): import("react/jsx-runtime").JSX.Element;
|
8
|
-
export {};
|
@@ -1,8 +0,0 @@
|
|
1
|
-
interface SimpleOrbProps {
|
2
|
-
hue?: number;
|
3
|
-
hoverIntensity?: number;
|
4
|
-
rotateOnHover?: boolean;
|
5
|
-
forceHoverState?: boolean;
|
6
|
-
}
|
7
|
-
export declare function SimpleOrb({ hue, hoverIntensity, rotateOnHover, forceHoverState, }: SimpleOrbProps): import("react/jsx-runtime").JSX.Element;
|
8
|
-
export {};
|
@@ -1,11 +0,0 @@
|
|
1
|
-
type Props = {
|
2
|
-
hueShift?: number;
|
3
|
-
noiseIntensity?: number;
|
4
|
-
scanlineIntensity?: number;
|
5
|
-
speed?: number;
|
6
|
-
scanlineFrequency?: number;
|
7
|
-
warpAmount?: number;
|
8
|
-
resolutionScale?: number;
|
9
|
-
};
|
10
|
-
export default function DarkVeil({ hueShift, noiseIntensity, scanlineIntensity, speed, scanlineFrequency, warpAmount, resolutionScale, }: Props): import("react/jsx-runtime").JSX.Element;
|
11
|
-
export {};
|
@@ -1,7 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Comprehensive Morphex BMX Data
|
3
|
-
* This constant contains all the latest information about Morphex BMX
|
4
|
-
* for use in the chat bot's context
|
5
|
-
*/
|
6
|
-
export declare const MORPHEX_BMX_DATA = "\n# Morphex BMX - Complete Information Guide\n\n## Overview\nBMX is a DeFi ecosystem designed to address a core challenge for long-term users and liquidity providers: the reliance on speculative trading cycles and temporary, unsustainable incentive programs. The protocol provides an alternative design for long-term holding, built on the principle of capturing real fees from a wide range of activities and routing them back to users without inflationary token emissions.\n\n## Catalyst Ahead\n- **DeliSwap Launch**: Long awaited launch of DeliSwap, a Base-native DEX built on Uniswap v4 hooks. Highly innovative design.\n- **Fee Cycling**: 100% of fees cycle back into BMX (97% auto-swapped, 3% to stakers). Even if routed through other aggregators, DeliSwap still captures backend fees.\n\n## Team, Tokenomics, Backing / Sentiment\n**Unique Backing**: One and only project after Aero where Coinbase market bought half a million $ worth of tokens onchain at 20% below current price.\n\n**Team**: Ex-Coinbase by Coinbase people, strong praise/support from Moonwell founder, Jesse etc.\n\n**Tokenomics**:\n- All tokens are unlocked\n- Only 16% in active circulation:\n - 70% are staked\n - 10% are in the treasury (according to the docs)\n - 4% are held by Coinbase Ventures, won't be sold anytime soon\n- ~2.7M Total supply, 700k tokens Circ.\n- At current prices that's just ~$4M effective mcap.\n- Project has Zero inflation, only buybacks announced recently\n\n## Platform Architecture\nThe ecosystem's architecture is centered around wBLT, an auto-compounding liquidity token comprised of blue-chip assets like BTC, ETH, and USDC. wBLT is designed to capture fees generated not only by BMX's native products but also from broader onchain activity, such as swaps routed through major DEX aggregators.\n\n## Core Products\n\n### 1. wBLT (Wrapped BMX Liquidity Token)\n- **Composition**: Blue-chip assets (cbBTC, ETH, USDC)\n- **Features**: Auto-compounding, transferable vault token\n- **APR**: Historical annualized APR around 60% (future rates may vary)\n- **Use Cases**: \n - High-quality collateral for platforms like Morpho\n - Useful pairing asset on DEXes\n - Auto-fee-accruing version of BLT\n\n### 2. BMX Classic\n- **Type**: Spot and margin trading platform based on GMX-v1\n- **Focus**: Capital efficiency and low fees\n- **Settlement**: All trades settled against singular liquidity pool (BLT)\n- **Liquidity**: Users can provide liquidity with any whitelisted asset\n\n### 3. BMX Freestyle\n- **Type**: Intent-based trading platform\n- **Features**: Low fees, access to over 250 trading markets\n- **Technology**: Powered by SYMMIO protocol\n- **Leverage**: Up to 60x leverage available\n\n### 4. Carousel (formerly Based MediaX)\n- **Type**: Non-fungible asset (NFA) exchange\n- **Features**: \n - Scan listings from all major NFT platforms\n - Save 50%+ on standard fees (0.25%)\n - Access auctions and randomized \"Carousel\" style listings\n - Earn or post incentives permissionlessly\n\n### 5. Deli Swap (Coming Soon)\n- **Type**: Base-native DEX built on Uniswap v4 hooks\n- **Architecture**: Non-custodial, decentralized, permissionless\n- **Features**: \n - Built on Uniswap V4 with hooks\n - wBLT base pairs in v1\n - 100% of fees distributed to BMX ecosystem\n - Static pool fees for v1, dynamic fees for v2\n\n## Fee Distribution System\n**Protocol Accrued Fee Allocation (BIP-20)**:\n- **Classic**: 80% to BLT, 20% to BMX Staking Safety Module (vote-directed)\n- **Freestyle**: 40% to BLT, 60% to BMX Staking Safety Module (vote-directed)\n- **Carousel**: 40% to BLT, 60% to BMX Staking Safety Module (vote-directed)\n- **Deli Swap**: 97% to LPs as BMX, 3% to BMX Staking Safety Module (vote-directed)\n\n## BMX Staking System\n**Staking Benefits**:\n- No lock up period\n- Receive multiplier points (100% APR)\n- Accrued fees routed as wETH\n- Available on Base, Mode, and Sonic\n\n**Multiplier Points (MPs)**:\n- Accrue at 100% APR on staked balance\n- Boost formula: Boost = MP / BMX\n- Unstaking burns MPs (encourages long-term staking)\n- Non-transferable and supply-neutral\n\n## Tokenomics & Distribution\n**Total Supply**: 2.85M BMX (after burns)\n**Allocation**:\n- **Treasury**: 322.61K BMX (10%)\n- **Team**: 419.39K BMX (13%)\n- **MPX Claimable Airdrop**: 600K BMX as oBMX (18.5%) - No Longer Active\n- **Initial Seed Liquidity**: 80.65K BMX (2.5%)\n\n**Recent Burns**: 179,688 BMX burned (bought back with treasury wBLT) as of June 15, 2024.\n\n## Technical Specifications\n**Networks**: Base, Mode, Sonic\n**Oracles**: Chainlink (onchain) and Pyth (offchain)\n**Governance**: Gas-free, off-chain voting via Snapshot\n**Security**: Multi-sig governed, audited contracts\n\n## Recent Developments\n- **Token Burns**: Over 5 million BMX tokens burned, valued at over $8 million\n- **Freestyle Launch**: New decentralized perpetual trading engine with 60x leverage\n- **wBLT Introduction**: Wrapped, composable, multi-use token with auto-fee-accruing\n- **DeliSwap Development**: Base-native DEX on Uniswap v4 hooks\n\n## Community & Resources\n- **Website**: https://morphex.trade\n- **Documentation**: https://docs.morphex.trade\n- **Discord**: https://discord.com/invite/morphex\n- **Warpcast**: https://warpcast.com/~/channel/morphex\n- **GitHub**: https://github.com/morphex\n- **Snapshot**: https://snapshot.box/#/s:bmxonbase.eth\n\n## Key Innovations\n1. **Vault-First Approach**: Automated fee-processing vaults\n2. **Composability**: wBLT enables multiple use cases\n3. **Capital Efficiency**: Eliminates competition between trading and native token liquidity\n4. **Zero Emissions**: No inflationary token emissions\n5. **Real Fee Capture**: Powered by actual protocol cash flow\n\n## Risk Management\n- **Counterparty Risk**: BLT is counterparty to traders\n- **Smart Contract Risk**: Standard DeFi protocol risks\n- **Asset Risk**: Exposure to bridged tokens and volatile assets\n- **Liquidation Risk**: Positions can be liquidated if margin insufficient\n\n## Getting Started\n1. Visit https://morphex.trade\n2. Connect wallet to Base/Mode/Sonic\n3. Choose product (Classic, Freestyle, Carousel)\n4. Deposit collateral and start trading\n5. Stake BMX for governance and fee accrual\n\nThis comprehensive guide covers all aspects of the BMX ecosystem including platform architecture, products, tokenomics, staking, and recent developments.\n";
|
7
|
-
export default MORPHEX_BMX_DATA;
|