wealth-alpha-chat-widget 1.0.2 → 1.0.4
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/dist/index.cjs +155 -35
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +1294 -25
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.mjs +155 -35
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -2
package/dist/index.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/styles/chat.module.css"],"sourcesContent":[".root {\n --wac-brand: #1a2d5a;\n --wac-brand-contrast: #ffffff;\n --wac-bg: #ffffff;\n --wac-fg: #1f2937;\n --wac-muted: #6b7280;\n --wac-border: #e5e7eb;\n --wac-bot-bg: #f3f4f6;\n --wac-user-bg: var(--wac-brand);\n --wac-chip-bg: #eef2ff;\n --wac-chip-fg: #1e293b;\n --wac-chip-active-bg: var(--wac-brand);\n --wac-chip-active-fg: #ffffff;\n --wac-radius: 14px;\n --wac-shadow: 0 12px 40px rgba(0, 0, 0, 0.18);\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n color: var(--wac-fg);\n box-sizing: border-box;\n}\n\n.root *,\n.root *::before,\n.root *::after {\n box-sizing: inherit;\n}\n\n.floatingButton {\n position: fixed;\n bottom: 24px;\n z-index: 2147483646;\n width: 60px;\n height: 60px;\n border-radius: 50%;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border: none;\n cursor: pointer;\n box-shadow: var(--wac-shadow);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 26px;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n}\n\n.floatingButton:hover {\n transform: translateY(-2px);\n box-shadow: 0 16px 48px rgba(0, 0, 0, 0.22);\n}\n\n.positionRight {\n right: 24px;\n}\n\n.positionLeft {\n left: 24px;\n}\n\n.widget {\n position: fixed;\n bottom: 24px;\n z-index: 2147483647;\n width: 420px;\n max-width: calc(100vw - 24px);\n height: min(760px, calc(100vh - 48px));\n background: var(--wac-bg);\n color: var(--wac-fg);\n border-radius: var(--wac-radius);\n box-shadow: var(--wac-shadow);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n border: 1px solid var(--wac-border);\n}\n\n@media (max-width: 640px) {\n .widget {\n width: calc(100vw - 12px);\n height: calc(100vh - 24px);\n bottom: 12px;\n }\n .positionRight,\n .positionLeft {\n right: 6px;\n left: auto;\n }\n .floatingButton {\n width: 56px;\n height: 56px;\n bottom: 16px;\n }\n /* Both positions collapse to right: 6px on mobile, so sync popup */\n .popupBubbleLeft,\n .popupBubbleRight {\n right: 72px;\n left: auto;\n bottom: 16px;\n max-width: calc(100vw - 84px);\n }\n}\n\n.header {\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n padding: 14px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.headerTitle {\n font-weight: 600;\n font-size: 15px;\n line-height: 1.2;\n}\n\n.headerMeta {\n font-size: 11px;\n opacity: 0.85;\n margin-top: 2px;\n}\n\n.headerActions {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n.iconButton {\n background: transparent;\n color: inherit;\n border: none;\n cursor: pointer;\n font-size: 18px;\n padding: 4px 8px;\n border-radius: 6px;\n line-height: 1;\n}\n\n.iconButton:hover {\n background: rgba(255, 255, 255, 0.15);\n}\n\n.body {\n flex: 1;\n overflow-y: auto;\n padding: 14px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n background: #fafafa;\n scroll-behavior: smooth;\n}\n\n.body::-webkit-scrollbar {\n width: 6px;\n}\n\n.body::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 3px;\n}\n\n.bubble {\n max-width: 80%;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n line-height: 1.45;\n word-wrap: break-word;\n white-space: pre-wrap;\n}\n\n/* markdown-it output inside a bot bubble.\n markdown-it (breaks: true) emits a <br> for every \\n in the source,\n so we MUST NOT also apply white-space: pre-wrap here — otherwise every\n newline gets rendered twice (once via <br>, once via the literal \\n in\n CSS) and the bubble looks double-spaced. */\n.markdown {\n white-space: normal;\n}\n.markdown p {\n margin: 0 0 6px 0;\n}\n.markdown p:last-child {\n margin-bottom: 0;\n}\n.markdown br {\n /* Make consecutive <br>s collapse a bit — keeps line rhythm tight. */\n line-height: 1.4;\n}\n.markdown strong {\n font-weight: 700;\n color: var(--wac-fg);\n letter-spacing: 0.2px;\n}\n.markdown em {\n font-style: italic;\n color: var(--wac-muted);\n}\n.markdown ul,\n.markdown ol {\n margin: 4px 0 6px 0;\n padding-left: 22px;\n}\n.markdown li {\n margin: 1px 0;\n}\n.markdown a {\n color: var(--wac-brand);\n text-decoration: underline;\n}\n.markdown code {\n background: rgba(0, 0, 0, 0.06);\n padding: 1px 4px;\n border-radius: 4px;\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n font-size: 12.5px;\n}\n.markdown h1,\n.markdown h2,\n.markdown h3 {\n margin: 6px 0 2px 0;\n font-size: 14px;\n font-weight: 700;\n}\n\n.bubbleBot {\n align-self: flex-start;\n background: var(--wac-bot-bg);\n color: var(--wac-fg);\n border-bottom-left-radius: 4px;\n}\n\n.bubbleUser {\n align-self: flex-end;\n background: var(--wac-user-bg);\n color: var(--wac-brand-contrast);\n border-bottom-right-radius: 4px;\n}\n\n.bubbleMeta {\n font-size: 10px;\n color: var(--wac-muted);\n margin-top: 4px;\n text-align: right;\n}\n\n.chipRow {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\n}\n\n.chip {\n padding: 7px 12px;\n background: var(--wac-chip-bg);\n color: var(--wac-chip-fg);\n border: 1px solid transparent;\n border-radius: 999px;\n font-size: 13px;\n cursor: pointer;\n transition: background 0.15s ease, transform 0.15s ease;\n font-family: inherit;\n}\n\n.chip:hover:not(:disabled) {\n background: #dbeafe;\n transform: translateY(-1px);\n}\n\n.chipActive {\n background: var(--wac-chip-active-bg);\n color: var(--wac-chip-active-fg);\n}\n\n.chipDisabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.typing {\n align-self: flex-start;\n display: inline-flex;\n gap: 4px;\n padding: 10px 14px;\n background: var(--wac-bot-bg);\n border-radius: 12px;\n border-bottom-left-radius: 4px;\n}\n\n.typingDot {\n width: 7px;\n height: 7px;\n background: var(--wac-muted);\n border-radius: 50%;\n animation: wacBlink 1.2s infinite ease-in-out both;\n}\n\n.typingDot:nth-child(2) {\n animation-delay: 0.18s;\n}\n.typingDot:nth-child(3) {\n animation-delay: 0.36s;\n}\n\n@keyframes wacBlink {\n 0%, 80%, 100% { opacity: 0.3; transform: scale(0.85); }\n 40% { opacity: 1; transform: scale(1); }\n}\n\n.input {\n display: flex;\n gap: 8px;\n padding: 10px 12px;\n border-top: 1px solid var(--wac-border);\n background: var(--wac-bg);\n}\n\n.inputBox {\n flex: 1;\n padding: 10px 14px;\n border: 1px solid var(--wac-border);\n border-radius: 999px;\n font-size: 14px;\n outline: none;\n font-family: inherit;\n background: #f9fafb;\n color: var(--wac-fg);\n}\n\n.inputBox:focus {\n border-color: var(--wac-brand);\n background: var(--wac-bg);\n}\n\n.inputBox:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.sendButton {\n padding: 0 16px;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border: none;\n border-radius: 999px;\n font-weight: 600;\n cursor: pointer;\n font-size: 14px;\n font-family: inherit;\n}\n\n.sendButton:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.hiddenFileInput {\n position: absolute;\n width: 0;\n height: 0;\n opacity: 0;\n overflow: hidden;\n pointer-events: none;\n}\n\n.csvButton {\n flex-shrink: 0;\n padding: 0 12px;\n background: var(--wac-chip-bg);\n color: var(--wac-chip-fg);\n border: 1px solid var(--wac-border);\n border-radius: 999px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n font-family: inherit;\n white-space: nowrap;\n}\n\n.csvButton:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.authGate {\n margin: auto;\n text-align: center;\n padding: 32px 24px;\n max-width: 280px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n align-items: center;\n}\n\n.authGateIcon {\n font-size: 36px;\n}\n\n.authGateTitle {\n font-size: 16px;\n font-weight: 600;\n}\n\n.authGateText {\n font-size: 13px;\n color: var(--wac-muted);\n line-height: 1.5;\n}\n\n.authGateButton {\n margin-top: 8px;\n padding: 10px 20px;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border: none;\n border-radius: 999px;\n cursor: pointer;\n font-weight: 600;\n font-size: 14px;\n font-family: inherit;\n}\n\n.authGateDisclaimer {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px dashed var(--wac-border);\n font-size: 11px;\n color: var(--wac-muted);\n line-height: 1.5;\n text-align: left;\n width: 100%;\n}\n\n.authGateDisclaimerTitle {\n font-weight: 700;\n letter-spacing: 0.6px;\n font-size: 10px;\n margin-bottom: 4px;\n color: var(--wac-fg);\n}\n\n.errorBanner {\n background: #fef2f2;\n border: 1px solid #fecaca;\n color: #991b1b;\n padding: 8px 12px;\n font-size: 12px;\n border-radius: 8px;\n margin: 0 14px 8px;\n}\n\n/* ── Greeting popup bubble ─────────────────────────────────────── */\n\n.popupBubble {\n position: fixed;\n bottom: 24px;\n z-index: 2147483646;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border-radius: 12px;\n padding: 12px 36px 12px 14px;\n font-size: 13px;\n line-height: 1.45;\n box-shadow: var(--wac-shadow);\n border: none;\n max-width: 240px;\n animation: wacPopIn 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n\n/* Shared arrow base — direction is set per-position class below */\n.popupBubble::after {\n content: '';\n position: absolute;\n width: 12px;\n height: 12px;\n background: var(--wac-brand);\n}\n\n/* Popup to the LEFT of a right-positioned button — arrow points right */\n.popupBubbleRight {\n right: 94px;\n}\n\n.popupBubbleRight::after {\n right: -7px;\n top: 50%;\n border-top: 1px solid var(--wac-brand);\n border-right: 1px solid var(--wac-brand);\n transform: translateY(-50%) rotate(45deg);\n}\n\n/* Popup to the RIGHT of a left-positioned button — arrow points left */\n.popupBubbleLeft {\n left: 94px;\n}\n\n.popupBubbleLeft::after {\n left: -7px;\n top: 50%;\n border-bottom: 1px solid var(--wac-brand);\n border-left: 1px solid var(--wac-brand);\n transform: translateY(-50%) rotate(45deg);\n}\n\n.popupDismiss {\n position: absolute;\n top: 8px;\n right: 8px;\n background: transparent;\n border: none;\n cursor: pointer;\n font-size: 14px;\n color: var(--wac-brand-contrast);\n line-height: 1;\n padding: 2px 4px;\n border-radius: 4px;\n font-family: inherit;\n opacity: 0.75;\n}\n\n.popupDismiss:hover {\n background: rgba(255, 255, 255, 0.15);\n opacity: 1;\n}\n\n@keyframes wacPopIn {\n 0% { opacity: 0; transform: scale(0.85) translateY(8px); }\n 100% { opacity: 1; transform: scale(1) translateY(0); }\n}\n"],"mappings":"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","names":["root","floatingButton","positionRight","positionLeft","widget","popupBubbleLeft","popupBubbleRight","header","headerTitle","headerMeta","headerActions","iconButton","body","bubble","markdown","bubbleBot","bubbleUser","bubbleMeta","chipRow","chip","chipActive","chipDisabled","typing","typingDot","wacBlink","input","inputBox","sendButton","hiddenFileInput","csvButton","authGate","authGateIcon","authGateTitle","authGateText","authGateButton","authGateDisclaimer","authGateDisclaimerTitle","errorBanner","popupBubble","popupDismiss","wacPopIn"]}
|
|
1
|
+
{"version":3,"sources":["../src/styles/chat.module.css"],"sourcesContent":["@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Sora:wght@600;700;800&display=swap');\n\n.root {\n --wac-brand: #1a2d5a;\n --wac-brand-contrast: #ffffff;\n --wac-bg: #ffffff;\n --wac-fg: #1f2937;\n --wac-muted: #6b7280;\n --wac-border: #e5e7eb;\n --wac-bot-bg: #f3f4f6;\n --wac-user-bg: var(--wac-brand);\n --wac-chip-bg: #e7ebf7;\n --wac-chip-fg: #1c2c5b;\n --wac-chip-active-bg: var(--wac-brand);\n --wac-chip-active-fg: #ffffff;\n --wac-radius: 14px;\n --wac-shadow: 0 12px 40px rgba(0, 0, 0, 0.18);\n font-family: 'Manrope', system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n color: var(--wac-fg);\n box-sizing: border-box;\n}\n\n.root *,\n.root *::before,\n.root *::after {\n box-sizing: inherit;\n}\n\n/* Sora for headings/labels/symbols — mirrors the HTML prototype */\n.headerTitle,\n.menuItemTitle,\n.markdown :global(.wa-card-sym),\n.markdown :global(.sec) :global(.lbl),\n.markdown :global(.wa-verdict-lbl) {\n font-family: 'Sora', 'Manrope', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n}\n\n.floatingButton {\n position: fixed;\n bottom: 24px;\n z-index: 2147483646;\n width: 60px;\n height: 60px;\n border-radius: 50%;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border: none;\n cursor: pointer;\n box-shadow: var(--wac-shadow);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 26px;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n}\n\n.floatingButton:hover {\n transform: translateY(-2px);\n box-shadow: 0 16px 48px rgba(0, 0, 0, 0.22);\n}\n\n.positionRight {\n right: 24px;\n}\n\n.positionLeft {\n left: 24px;\n}\n\n.widget {\n position: fixed;\n bottom: 24px;\n z-index: 2147483647;\n width: 420px;\n max-width: calc(100vw - 24px);\n height: min(760px, calc(100vh - 48px));\n background: var(--wac-bg);\n color: var(--wac-fg);\n border-radius: 24px;\n box-shadow: 0 18px 50px -18px rgba(28, 44, 91, 0.45);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n border: 1px solid var(--wac-border);\n}\n\n@media (max-width: 640px) {\n .widget {\n width: calc(100vw - 12px);\n height: calc(100vh - 24px);\n bottom: 12px;\n }\n .positionRight,\n .positionLeft {\n right: 6px;\n left: auto;\n }\n .floatingButton {\n width: 56px;\n height: 56px;\n bottom: 16px;\n }\n /* Both positions collapse to right: 6px on mobile, so sync popup */\n .popupBubbleLeft,\n .popupBubbleRight {\n right: 72px;\n left: auto;\n bottom: 16px;\n max-width: calc(100vw - 84px);\n }\n}\n\n.header {\n background: linear-gradient(135deg, var(--wac-brand) 0%, #15224a 100%);\n color: var(--wac-brand-contrast);\n padding: 15px 18px 13px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.headerTitle {\n font-weight: 700;\n font-size: 17px;\n line-height: 1.2;\n}\n\n.headerMeta {\n font-size: 11px;\n opacity: 0.85;\n margin-top: 2px;\n}\n\n.headerActions {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n.iconButton {\n background: transparent;\n color: inherit;\n border: none;\n cursor: pointer;\n font-size: 18px;\n padding: 4px 8px;\n border-radius: 6px;\n line-height: 1;\n}\n\n.iconButton:hover {\n background: rgba(255, 255, 255, 0.15);\n}\n\n.body {\n flex: 1;\n overflow-y: auto;\n padding: 14px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n background: #fafafa;\n scroll-behavior: smooth;\n}\n\n.body::-webkit-scrollbar {\n width: 6px;\n}\n\n.body::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 3px;\n}\n\n.bubble {\n /* max-width: 80%; */\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n line-height: 1.45;\n word-wrap: break-word;\n white-space: pre-wrap;\n}\n\n/* markdown-it output inside a bot bubble.\n markdown-it (breaks: true) emits a <br> for every \\n in the source,\n so we MUST NOT also apply white-space: pre-wrap here — otherwise every\n newline gets rendered twice (once via <br>, once via the literal \\n in\n CSS) and the bubble looks double-spaced. */\n.markdown {\n white-space: normal;\n --card-bg: #ffffff;\n --text: var(--wac-fg);\n --text-muted: var(--wac-muted);\n --green: #16a34a;\n --red: #dc2626;\n}\n.markdown p {\n margin: 0 0 6px 0;\n}\n.markdown p:last-child {\n margin-bottom: 0;\n}\n.markdown br {\n /* Make consecutive <br>s collapse a bit — keeps line rhythm tight. */\n line-height: 1.4;\n}\n.markdown strong {\n font-weight: 700;\n color: var(--wac-fg);\n letter-spacing: 0.2px;\n}\n.markdown em {\n font-style: italic;\n color: var(--wac-muted);\n}\n.markdown ul,\n.markdown ol {\n margin: 4px 0 6px 0;\n padding-left: 22px;\n}\n.markdown li {\n margin: 1px 0;\n}\n.markdown a {\n color: var(--wac-brand);\n text-decoration: underline;\n}\n.markdown code {\n background: rgba(0, 0, 0, 0.06);\n padding: 1px 4px;\n border-radius: 4px;\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n font-size: 12.5px;\n}\n.markdown h1,\n.markdown h2,\n.markdown h3 {\n margin: 6px 0 2px 0;\n font-size: 14px;\n font-weight: 700;\n}\n\n/* Price snapshot grid (backend: price_snapshot_template.py) */\n.markdown :global(.mgrid) {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 10px;\n margin-top: 8px;\n}\n\n.markdown :global(.mgrid) :global(.wa-price) {\n background: var(--card-bg, #fff);\n border: 1px solid #e6e9f5;\n border-radius: 12px;\n padding: 12px 14px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.markdown :global(.mgrid) :global(.k) {\n font-size: 11px;\n color: var(--text-muted, #888);\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.markdown :global(.mgrid) :global(.wa-price-value) {\n font-size: 18px;\n font-weight: 700;\n color: var(--text, #111);\n}\n\n.markdown :global(.mgrid) :global(.wa-price-value.up) {\n color: var(--green);\n}\n\n.markdown :global(.mgrid) :global(.wa-price-value.down) {\n color: var(--red);\n}\n\n.markdown :global(.mgrid) :global(.n) {\n font-size: 12px;\n font-weight: 500;\n color: var(--text-muted, #888);\n}\n\n.markdown :global(.mgrid) :global(.n.up) {\n color: var(--green);\n}\n\n.markdown :global(.mgrid) :global(.n.down) {\n color: var(--red);\n}\n\n.markdown :global(.sec) :global(.lbl) {\n font-size: 13px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--text-muted, #666);\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.markdown :global(.mgrid) :global(.wa-price.full-width) {\n grid-column: 1 / -1;\n text-align: center;\n align-items: center;\n justify-content: center;\n}\n/* ── Stock Analysis Card — existing investor flow ────────────────────────── */\n\n/* Outer card wrapper */\n.markdown :global(.wa-analysis-card) {\n background: #fff;\n border: 1px solid #e6e9f5;\n border-radius: 18px;\n overflow: hidden;\n box-shadow: 0 12px 34px -24px rgba(28, 44, 91, 0.4);\n margin-bottom: 4px;\n}\n\n/* Card header — navy gradient */\n.markdown :global(.wa-card-head) {\n background: linear-gradient(135deg, #22356e 0%, #15224a 100%);\n color: #fff;\n padding: 14px 16px 13px;\n position: relative;\n}\n.markdown :global(.wa-card-date) {\n float: right;\n font-size: 11px;\n opacity: 0.7;\n font-weight: 600;\n}\n.markdown :global(.wa-card-tag) {\n display: inline-block;\n font-size: 9.5px;\n font-weight: 800;\n letter-spacing: 1px;\n background: rgba(255, 255, 255, 0.16);\n padding: 3px 9px;\n border-radius: 6px;\n margin-bottom: 8px;\n}\n.markdown :global(.wa-card-sym) {\n font-weight: 700;\n font-size: 17px;\n line-height: 1.2;\n}\n.markdown :global(.wa-card-meta) {\n font-size: 11.5px;\n opacity: 0.8;\n margin-top: 3px;\n}\n\n/* Section container */\n.markdown :global(.sec) {\n padding: 12px 14px;\n border-top: 1px solid #eceffa;\n}\n\n/* Metric grid — flat variant (gap = 1px divider line effect) */\n.markdown :global(.mgrid.flat) {\n border: none;\n gap: 10px;\n background: transparent;\n margin-top: 9px;\n}\n\n/* Metric cell */\n.markdown :global(.mgrid) :global(.m) {\n background: #fff;\n border: 1px solid #e6e9f5;\n border-radius: 10px;\n padding: 12px 13px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.markdown :global(.mgrid) :global(.m) :global(.k) {\n font-size: 9.5px;\n color: #737b97;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n font-weight: 700;\n}\n.markdown :global(.mgrid) :global(.m) :global(.v) {\n font-size: 14px;\n font-weight: 700;\n color: #1c2438;\n margin-top: 2px;\n}\n.markdown :global(.mgrid) :global(.m) :global(.n) {\n font-size: 10.5px;\n font-weight: 700;\n color: #737b97;\n margin-top: 1px;\n}\n/* Score colour modifiers on .n inside metric cells */\n.markdown :global(.mgrid) :global(.m) :global(.n.good) {\n color: #16a34a;\n}\n.markdown :global(.mgrid) :global(.m) :global(.n.avg) {\n color: #737b97;\n}\n.markdown :global(.mgrid) :global(.m) :global(.n.low) {\n color: #b45309;\n}\n\n/* Regime label inside metric cell */\n.markdown :global(.wa-regime) {\n font-size: 12px;\n}\n\n/* Your Position block */\n.markdown :global(.wa-pos) {\n margin-top: 9px;\n border-radius: 12px;\n padding: 12px 14px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n}\n.markdown :global(.wa-pos.profit) {\n background: linear-gradient(135deg, #ecfdf3, #f7fef9);\n border-color: #bbf7d0;\n}\n.markdown :global(.wa-pos.loss) {\n background: linear-gradient(135deg, #fef2f2, #fff5f5);\n border-color: #fecaca;\n}\n.markdown :global(.wa-pl) {\n font-weight: 800;\n font-size: 22px;\n line-height: 1;\n color: #1c2438;\n}\n.markdown :global(.wa-pl.up) {\n color: #16a34a;\n}\n.markdown :global(.wa-pl.down) {\n color: #dc2626;\n}\n.markdown :global(.wa-zone) {\n font-size: 11px;\n font-weight: 700;\n color: #737b97;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n margin-top: 4px;\n}\n.markdown :global(.wa-summ) {\n font-size: 12.5px;\n line-height: 1.5;\n margin-top: 8px;\n color: #3a4159;\n}\n\n/* Key-value rows (Trend Structure, Indicators) */\n.markdown :global(.kv) {\n display: flex;\n gap: 8px;\n font-size: 12.5px;\n line-height: 1.5;\n margin-bottom: 7px;\n}\n.markdown :global(.kv:last-child) {\n margin-bottom: 0;\n}\n.markdown :global(.kk) {\n font-weight: 700;\n color: #1c2c5b;\n flex: 0 0 auto;\n min-width: 90px;\n}\n.markdown :global(.vv) {\n color: #3a4159;\n}\n\n/* Recovery level value */\n.markdown :global(.wa-recovery) {\n font-size: 11.5px;\n color: #3a4159;\n}\n\n/* Verdict block */\n.markdown :global(.wa-verdict) {\n padding: 13px 16px;\n border-top: 1px solid #eceffa;\n background: #fafbff;\n}\n.markdown :global(.wa-verdict-lbl) {\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: 0.7px;\n text-transform: uppercase;\n color: #1c2c5b;\n margin-bottom: 8px;\n}\n.markdown :global(.wa-verdict-list) {\n margin: 0;\n padding-left: 20px;\n list-style-type: disc;\n list-style-position: outside;\n font-size: 12.5px;\n line-height: 1.55;\n color: #3a4159;\n}\n.markdown :global(.wa-verdict-list) li {\n display: list-item;\n margin-bottom: 6px;\n padding-left: 2px;\n}\n.markdown :global(.wa-verdict-list) li:last-child {\n margin-bottom: 0;\n}\n\n/* Business Health bullets and scale note */\n.markdown :global(.wa-bullets) {\n margin: 8px 0 4px 0;\n padding-left: 17px;\n font-size: 12px;\n line-height: 1.5;\n color: #3a4159;\n}\n.markdown :global(.wa-bullets) li {\n margin-bottom: 4px;\n}\n.markdown :global(.wa-scale-note) {\n font-size: 10.5px;\n color: #737b97;\n margin-top: 6px;\n line-height: 1.4;\n}\n\n/* VS Peers */\n.markdown :global(.wa-peer-ctx) {\n font-size: 12px;\n color: #737b97;\n margin-bottom: 8px;\n font-weight: bold;\n}\n.markdown :global(.wa-peer-row) {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 7px 10px;\n border-radius: 8px;\n background: #f8f9fc;\n border: 1px solid #eceffa;\n margin-bottom: 6px;\n font-size: 12px;\n}\n.markdown :global(.wa-peer-sym) {\n font-weight: 700;\n color: #1c2c5b;\n}\n.markdown :global(.wa-peer-detail) {\n color: #3a4159;\n}\n.markdown :global(.wa-peer-detail) :global(.up) {\n color: #16a34a;\n font-weight: 700;\n}\n.markdown :global(.wa-peer-detail) :global(.down) {\n color: #dc2626;\n font-weight: 700;\n}\n.markdown :global(.wa-peer-empty) {\n font-size: 12px;\n color: #737b97;\n line-height: 1.5;\n padding: 4px 0;\n}\n.markdown :global(.wa-top-peer) {\n font-size: 11.5px;\n color: #1c2c5b;\n font-weight: 600;\n margin-top: 4px;\n padding: 6px 10px;\n background: #eef2ff;\n border-radius: 8px;\n}\n\n/* ── New Investor Flow — Signal, AI Lens, Indicators, Invalidation ───────── */\n\n/* Signal badge + label row */\n.markdown :global(.wa-signal-header) {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n margin-bottom: 10px;\n}\n.markdown :global(.wa-signal-lbl) {\n font-size: 13px;\n font-weight: 600;\n color: #3a4159;\n flex: 1;\n}\n.markdown :global(.wa-signal-level) {\n padding: 10px 0;\n}\n.markdown :global(.wa-signal-level) :global(.kv) {\n gap: 4px;\n align-items: center;\n margin-bottom: 0;\n}\n.markdown :global(.wa-signal-level) :global(.kk) {\n min-width: auto;\n}\n\n/* Direction / action badges (shared across flows) */\n.markdown :global(.wa-badge) {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 6px 13px;\n border-radius: 999px;\n font-size: 12px;\n font-weight: 800;\n letter-spacing: 0.3px;\n white-space: nowrap;\n}\n.markdown :global(.wa-b-buy) {\n background: #dcfce7;\n color: #16a34a;\n}\n.markdown :global(.wa-b-sell) {\n background: #fee2e2;\n color: #dc2626;\n}\n.markdown :global(.wa-b-wait) {\n background: #fef3e0;\n color: #b45309;\n}\n.markdown :global(.wa-b-info) {\n background: #e0ecff;\n color: #2563eb;\n}\n\n/* ── Macro Event card (.evt) ─────────────────────────────────────────────── */\n.markdown :global(.evt) {\n border: 1px solid #e6e9f5;\n border-radius: 16px;\n overflow: hidden;\n margin-bottom: 12px;\n background: #fff;\n box-shadow: 0 12px 30px -24px rgba(28, 44, 91, 0.4);\n}\n.markdown :global(.evt .top) {\n padding: 13px 15px;\n display: flex;\n gap: 11px;\n align-items: flex-start;\n}\n.markdown :global(.evt .num) {\n width: 26px;\n height: 26px;\n flex: 0 0 auto;\n border-radius: 8px;\n background: #1c2c5b;\n color: #fff;\n display: grid;\n place-items: center;\n font-weight: 700;\n font-size: 13px;\n}\n.markdown :global(.evt .ti) {\n font-weight: 700;\n font-size: 13.5px;\n line-height: 1.25;\n color: #1c2438;\n}\n.markdown :global(.evt .dt) {\n font-size: 11px;\n color: #737b97;\n margin-top: 2px;\n}\n.markdown :global(.evt .news) {\n padding: 0 15px 12px;\n font-size: 12.5px;\n line-height: 1.5;\n color: #3a4159;\n}\n.markdown :global(.evt .news .imp) {\n display: inline-block;\n margin-top: 7px;\n}\n.markdown :global(.evt .body) {\n padding: 11px 15px;\n border-top: 1px solid #eceffa;\n background: #fbfcff;\n}\n.markdown :global(.evt .body) :global(.lbl) {\n font-size: 13px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--text-muted, #666);\n margin-top: 8px;\n margin-bottom: 6px;\n}\n.markdown :global(.evt .body) :global(.wa-verdict-text) {\n margin: 4px 0 0;\n}\n\n/* ── Sector impact block (.impact) ──────────────────────────────────────── */\n.markdown :global(.impact) {\n margin-top: 8px;\n}\n.markdown :global(.ih) {\n font-size: 10.5px;\n font-weight: 800;\n letter-spacing: 0.4px;\n text-transform: uppercase;\n margin-bottom: 7px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.markdown :global(.ih.neg) { color: #dc2626; }\n.markdown :global(.ih.mod) { color: #b45309; }\n.markdown :global(.ih.pos) { color: #16a34a; }\n\n/* ── Sector impact pill (.pill) ─────────────────────────────────────────── */\n.markdown :global(.pill) {\n display: block;\n font-size: 12px;\n line-height: 1.45;\n padding: 8px 11px;\n border-radius: 10px;\n margin-bottom: 6px;\n border: 1px solid;\n}\n.markdown :global(.pill b) { font-weight: 700; }\n.markdown :global(.pill.neg) {\n background: #fee2e2;\n border-color: #fecaca;\n color: #7f1d1d;\n}\n.markdown :global(.pill.mod) {\n background: #fef3e0;\n border-color: #fde2b8;\n color: #7c4a03;\n}\n.markdown :global(.pill.pos) {\n background: #dcfce7;\n border-color: #bbf7d0;\n color: #14532d;\n}\n\n/* Confidence score row */\n.markdown :global(.wa-conf-row) {\n display: flex;\n align-items: center;\n gap: 9px;\n margin-top: 10px;\n padding: 8px 12px;\n background: #f8f9fc;\n border-radius: 10px;\n border: 1px solid #eceffa;\n}\n.markdown :global(.wa-conf-badge) {\n font-size: 13px;\n font-weight: 800;\n padding: 4px 10px;\n border-radius: 999px;\n background: #eceffa;\n color: #1c2c5b;\n}\n.markdown :global(.wa-conf-badge.good) {\n background: #dcfce7;\n color: #16a34a;\n}\n.markdown :global(.wa-conf-badge.low) {\n background: #fee2e2;\n color: #dc2626;\n}\n.markdown :global(.wa-conf-badge.avg) {\n background: #fef3e0;\n color: #b45309;\n}\n.markdown :global(.wa-conf-text) {\n font-size: 12px;\n color: #3a4159;\n flex: 1;\n}\n\n/* AI Lens */\n.markdown :global(.wa-ai-heading) {\n font-size: 13.5px;\n font-weight: 700;\n color: #1c2c5b;\n margin-bottom: 5px;\n}\n.markdown :global(.wa-ai-insight) {\n font-size: 12.5px;\n line-height: 1.55;\n color: #3a4159;\n margin-bottom: 6px;\n}\n\n/* Invalidation */\n.markdown :global(.wa-inv-text) {\n font-size: 12.5px;\n line-height: 1.5;\n color: #3a4159;\n}\n.markdown :global(.wa-inv-status) {\n margin-top: 8px;\n}\n\n/* Text verdict (new investor flow — single string, not a bullet list) */\n.markdown :global(.wa-verdict-text) {\n font-size: 12.5px;\n line-height: 1.55;\n color: #3a4159;\n}\n\n/* ── Portfolio Risk — Gauge, Action Rows, Clist, Allocation Bars ────────── */\n\n/* Health score gauge (red → amber → green gradient) */\n.markdown :global(.gauge) {\n height: 10px;\n border-radius: 6px;\n background: linear-gradient(90deg, #dc2626 0%, #f59e0b 50%, #16a34a 100%);\n position: relative;\n margin: 6px 0 28px;\n}\n.markdown :global(.wa-portfolio-gauge-wrap) {\n padding: 4px 22px 32px;\n overflow: visible;\n}\n.markdown :global(.wa-portfolio-health-gauge) {\n margin: 6px 0 0;\n}\n.markdown :global(.gauge) :global(.pin),\n.markdown :global(.wa-portfolio-gauge-pin) {\n position: absolute;\n top: -4px;\n width: 5px;\n height: 18px;\n border-radius: 3px;\n background: #1c2c5b;\n box-shadow: 0 0 0 3px #fff;\n transform: translateX(-50%);\n}\n.markdown :global(.gauge) :global(.lab),\n.markdown :global(.wa-portfolio-gauge-score) {\n position: absolute;\n top: 17px;\n font-size: 11px;\n font-weight: 800;\n color: #1c2c5b;\n transform: translateX(-50%);\n white-space: nowrap;\n}\n\n/* Portfolio performance header — two-line summary */\n.markdown :global(.wa-portfolio-performance-head) :global(.wa-portfolio-header-title) {\n margin-top: 2px;\n line-height: 1.25;\n}\n.markdown :global(.wa-portfolio-header-meta) {\n margin-top: 8px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.markdown :global(.wa-portfolio-header-summary) {\n font-size: 11.5px;\n line-height: 1.45;\n opacity: 0.92;\n color: #fff;\n}\n.markdown :global(.wa-portfolio-header-risk) {\n font-size: 11px;\n line-height: 1.4;\n opacity: 0.75;\n color: #fff;\n}\n\n/* Portfolio health section spacing */\n.markdown :global(.wa-portfolio-health-section) {\n overflow: visible;\n}\n.markdown :global(.wa-portfolio-health-verdict) {\n margin-top: 2px;\n}\n\n/* CAGR / Risk metric rows */\n.markdown :global(.wa-portfolio-metrics-block) {\n padding: 10px 0 6px;\n margin-top: 4px;\n}\n.markdown :global(.wa-portfolio-metric-row) {\n align-items: flex-start;\n gap: 10px;\n margin-bottom: 6px;\n}\n.markdown :global(.wa-portfolio-metric-row):last-child {\n margin-bottom: 0;\n}\n.markdown :global(.wa-portfolio-metric-label) {\n min-width: 48px;\n flex-shrink: 0;\n}\n.markdown :global(.wa-portfolio-metric-value) {\n flex: 1;\n line-height: 1.45;\n}\n\n/* Portfolio optimization bullet lists */\n.markdown :global(.wa-portfolio-bullet-list) {\n margin: 0;\n padding-left: 20px;\n list-style-type: disc;\n list-style-position: outside;\n font-size: 12.5px;\n line-height: 1.55;\n color: #3a4159;\n}\n.markdown :global(.wa-portfolio-bullet-list) li {\n display: list-item;\n margin-bottom: 6px;\n padding-left: 2px;\n}\n.markdown :global(.wa-portfolio-bullet-list) li:last-child {\n margin-bottom: 0;\n}\n.markdown :global(.wa-portfolio-concerns-list),\n.markdown :global(.wa-portfolio-actions-needed-list) {\n margin-top: 2px;\n}\n.markdown :global(.wa-portfolio-verdict-block) :global(.wa-portfolio-verdict-list) {\n margin-top: 0;\n}\n\n/* Health check — Current Mix vs Target (Stocks row full-width centered) */\n.markdown :global(.wa-portfolio-mix-grid) :global(.wa-portfolio-mix-stocks-full) {\n grid-column: 1 / -1;\n text-align: center;\n align-items: center;\n justify-content: center;\n}\n.markdown :global(.wa-portfolio-mix-stocks-full) :global(.v) {\n text-align: center;\n}\n\n/* Health check — Stock / ETF deviation rows */\n.markdown :global(.wa-portfolio-deviation-block) {\n padding: 10px 0 4px;\n margin-top: 6px;\n}\n.markdown :global(.wa-portfolio-deviation-row) {\n align-items: flex-start;\n gap: 10px;\n margin-bottom: 8px;\n}\n.markdown :global(.wa-portfolio-deviation-row):last-child {\n margin-bottom: 0;\n}\n.markdown :global(.wa-portfolio-deviation-label) {\n min-width: 108px;\n flex-shrink: 0;\n}\n.markdown :global(.wa-portfolio-deviation-value) {\n flex: 1;\n line-height: 1.45;\n}\n\n/* Health check — Structure Points cards */\n.markdown :global(.wa-portfolio-structure-section) {\n padding-bottom: 14px;\n}\n.markdown :global(.wa-portfolio-structure-card) {\n border: 1px solid #e6e9f5;\n border-radius: 12px;\n padding: 11px 13px;\n margin-bottom: 8px;\n background: #f8f9fc;\n}\n.markdown :global(.wa-portfolio-structure-card):last-child {\n margin-bottom: 0;\n}\n.markdown :global(.wa-portfolio-structure-card-head) {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n margin-bottom: 6px;\n}\n.markdown :global(.wa-portfolio-structure-symbol) {\n font-weight: 800;\n font-size: 13px;\n color: #1c2c5b;\n letter-spacing: 0.02em;\n}\n.markdown :global(.wa-portfolio-structure-score-badge) {\n font-size: 10px;\n font-weight: 700;\n padding: 3px 8px;\n border-radius: 999px;\n background: #eceffa;\n color: #1c2c5b;\n white-space: nowrap;\n}\n.markdown :global(.wa-portfolio-structure-line) {\n font-size: 12px;\n line-height: 1.45;\n color: #3a4159;\n margin-bottom: 4px;\n}\n.markdown :global(.wa-portfolio-structure-line) :global(.up) {\n color: var(--green);\n font-weight: 700;\n}\n.markdown :global(.wa-portfolio-structure-line) :global(.down) {\n color: var(--red);\n font-weight: 700;\n}\n.markdown :global(.wa-portfolio-structure-line):last-of-type {\n margin-bottom: 0;\n}\n.markdown :global(.wa-portfolio-structure-meta) {\n font-size: 11.5px;\n line-height: 1.4;\n color: #737b97;\n margin-top: 4px;\n}\n\n/* Portfolio build — Sector Allocation card layout */\n.markdown :global(.wa-portfolio-sector-card-head) {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 6px;\n margin-bottom: 8px;\n}\n.markdown :global(.wa-portfolio-sector-return) {\n flex: 1;\n text-align: center;\n font-size: 11px;\n font-weight: 600;\n color: #3a4159;\n white-space: nowrap;\n}\n.markdown :global(.wa-portfolio-sector-return) :global(.up) {\n color: var(--green);\n font-weight: 700;\n}\n.markdown :global(.wa-portfolio-sector-return) :global(.down) {\n color: var(--red);\n font-weight: 700;\n}\n.markdown :global(.wa-portfolio-sector-capital-line) {\n font-size: 12px;\n font-weight: 700;\n color: #3a4159;\n margin-bottom: 6px;\n}\n.markdown :global(.wa-portfolio-sector-bullet-list) {\n list-style: none;\n padding-left: 0;\n margin: 0;\n font-size: 12px;\n line-height: 1.5;\n}\n.markdown :global(.wa-portfolio-sector-bullet-list) li {\n margin-bottom: 4px;\n padding-left: 0;\n}\n.markdown :global(.wa-portfolio-sector-bullet-list) li::before {\n content: \"· \";\n font-weight: 700;\n color: #737b97;\n}\n.markdown :global(.wa-portfolio-sector-bullet-list) li:last-child {\n margin-bottom: 0;\n}\n\n/* Health verdict text */\n.markdown :global(.wa-health-text) {\n font-size: 12px;\n font-weight: 600;\n color: #dc2626;\n line-height: 1.5;\n margin-top: 4px;\n}\n.markdown :global(.wa-health-text.ok) {\n color: #16a34a;\n}\n.markdown :global(.wa-health-text.warn) {\n color: #b45309;\n}\n\n/* Action rows — EXIT / TRIM / ADD / HOLD / SWITCH / REVIEW */\n.markdown :global(.act) {\n display: flex;\n gap: 10px;\n align-items: flex-start;\n padding: 10px 12px;\n border-radius: 12px;\n margin-bottom: 8px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n}\n.markdown :global(.act):last-child {\n margin-bottom: 0;\n}\n.markdown :global(.act.exit) {\n background: #fee2e2;\n border-color: #fecaca;\n}\n.markdown :global(.act.trim) {\n background: #fef3e0;\n border-color: #fde2b8;\n}\n.markdown :global(.act.add) {\n background: #dcfce7;\n border-color: #bbf7d0;\n}\n.markdown :global(.act.hold) {\n background: #f1f3fa;\n border-color: #e0e4f0;\n}\n.markdown :global(.act.switch) {\n background: #e0ecff;\n border-color: #bfdbfe;\n}\n/* Action type label pill */\n.markdown :global(.act) :global(.at) {\n flex: 0 0 auto;\n font-size: 10px;\n font-weight: 800;\n letter-spacing: 0.5px;\n padding: 4px 8px;\n border-radius: 6px;\n color: #fff;\n white-space: nowrap;\n}\n.markdown :global(.act.exit) :global(.at) { background: #dc2626; }\n.markdown :global(.act.trim) :global(.at) { background: #b45309; }\n.markdown :global(.act.add) :global(.at) { background: #16a34a; }\n.markdown :global(.act.hold) :global(.at) { background: #737b97; }\n.markdown :global(.act.switch) :global(.at) { background: #2563eb; }\n/* Action description */\n.markdown :global(.act) :global(.ad) {\n font-size: 12.5px;\n line-height: 1.45;\n}\n.markdown :global(.act) :global(.ad) b {\n font-weight: 700;\n color: #1c2c5b;\n}\n.markdown :global(.act) :global(.ad) :global(.r) {\n color: #3a4159;\n display: block;\n margin-top: 2px;\n}\n\n/* Concerns / actions bullet list */\n.markdown :global(.clist) {\n margin: 0;\n padding-left: 17px;\n font-size: 12px;\n line-height: 1.5;\n color: #3a4159;\n}\n.markdown :global(.clist) li {\n margin-bottom: 5px;\n}\n.markdown :global(.clist) li:last-child {\n margin-bottom: 0;\n}\n\n/* Asset allocation bars */\n.markdown :global(.alloc) {\n margin-top: 6px;\n}\n.markdown :global(.alloc) :global(.row) {\n display: flex;\n align-items: center;\n gap: 9px;\n margin-bottom: 9px;\n font-size: 12px;\n}\n.markdown :global(.alloc) :global(.row):last-child {\n margin-bottom: 0;\n}\n.markdown :global(.alloc) :global(.nm) {\n width: 54px;\n font-weight: 700;\n color: #1c2c5b;\n flex-shrink: 0;\n}\n.markdown :global(.alloc) :global(.bar) {\n flex: 1;\n height: 8px;\n border-radius: 5px;\n background: #eef0f7;\n overflow: hidden;\n}\n.markdown :global(.alloc) :global(.bar) i {\n display: block;\n height: 100%;\n border-radius: 5px;\n background: #1c2c5b;\n}\n.markdown :global(.alloc) :global(.pct) {\n width: 42px;\n text-align: right;\n font-weight: 700;\n color: #1c2438;\n flex-shrink: 0;\n}\n\n/* Return value colour helpers inside metric grid .v cells */\n.markdown :global(.mgrid) :global(.v.up) {\n color: var(--green);\n}\n.markdown :global(.mgrid) :global(.v.down) {\n color: var(--red);\n}\n.markdown :global(.mgrid) :global(.m) :global(.n.up) {\n color: var(--green);\n}\n.markdown :global(.mgrid) :global(.m) :global(.n.down) {\n color: var(--red);\n}\n.markdown :global(.mgrid) :global(.v.low) {\n color: #b45309;\n}\n\n/* Signal score emphasis inside kv rows (Tradable Candidate) */\n.markdown :global(.kv) :global(.vv) :global(b.up) {\n color: var(--green);\n}\n.markdown :global(.kv) :global(.vv) :global(b.down) {\n color: var(--red);\n}\n.markdown :global(.kv) :global(.vv) :global(b.low) {\n color: #b45309;\n}\n\n/* ── Crypto Analysis — stance row, metric notes, kv stacks ──────────────── */\n.markdown :global(.wa-crypto-stance-row) {\n margin-top: 8px;\n}\n.markdown :global(.wa-crypto-stance-row-lg) {\n margin-top: 11px;\n}\n.markdown :global(.wa-crypto-stance-reason) {\n font-size: 12px;\n color: #3a4159;\n margin-top: 8px;\n line-height: 1.5;\n}\n.markdown :global(.mgrid) :global(.m) :global(.n.wa-crypto-metric-detail) {\n font-weight: 500;\n line-height: 1.35;\n}\n.markdown :global(.wa-crypto-kv-primary) {\n display: block;\n font-size: 14px;\n font-weight: 700;\n}\n.markdown :global(.wa-crypto-kv-note) {\n display: block;\n font-size: 10.5px;\n font-weight: 700;\n margin-top: 2px;\n}\n.markdown :global(.wa-crypto-kv-note.up) {\n color: var(--green);\n}\n.markdown :global(.wa-crypto-kv-note.down) {\n color: var(--red);\n}\n.markdown :global(.wa-crypto-kv-note.low) {\n color: #b45309;\n}\n.markdown :global(.wa-crypto-kv-note.avg) {\n color: #737b97;\n}\n.markdown :global(.wa-crypto-kv-detail) {\n display: block;\n font-size: 10.5px;\n font-weight: 500;\n color: #737b97;\n margin-top: 2px;\n line-height: 1.35;\n}\n\n/* ── Stock Discovery & New Listings Card Components ─────────────────────── */\n\n/* Individual stock card */\n.markdown :global(.dstock) {\n border: 1px solid #e6e9f5;\n border-radius: 14px;\n padding: 12px 13px;\n margin-bottom: 10px;\n background: #fff;\n}\n.markdown :global(.dstock):last-child {\n margin-bottom: 0;\n}\n\n/* Stock card header row */\n.markdown :global(.dh) {\n display: flex;\n align-items: center;\n gap: 9px;\n margin-bottom: 9px;\n}\n\n/* Rank number chip */\n.markdown :global(.rank) {\n width: 24px;\n height: 24px;\n flex: 0 0 auto;\n border-radius: 6px;\n background: #e7ebf7;\n color: #1c2c5b;\n display: grid;\n place-items: center;\n font-weight: 800;\n font-size: 12px;\n}\n\n/* Stock symbol + company name */\n.markdown :global(.nm) {\n font-weight: 700;\n font-size: 13.5px;\n line-height: 1.2;\n color: #1c2438;\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n}\n/* Inline badge inside .nm — smaller than the standalone badge */\n.markdown :global(.nm) :global(.wa-badge) {\n font-size: 10px;\n padding: 3px 8px;\n vertical-align: middle;\n}\n.markdown :global(.co) {\n font-size: 10.5px;\n color: #737b97;\n margin-top: 2px;\n}\n\n/* Fundamental score (right-aligned) */\n.markdown :global(.dstock) :global(.fs) {\n margin-left: auto;\n text-align: right;\n flex-shrink: 0;\n}\n.markdown :global(.dstock) :global(.fs) :global(.num) {\n font-weight: 800;\n font-size: 18px;\n color: #1c2c5b;\n line-height: 1;\n}\n.markdown :global(.dstock) :global(.fs) :global(.cap) {\n font-size: 8.5px;\n color: #737b97;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n margin-top: 2px;\n}\n\n/* Quality/Value/Growth/Confidence tag row */\n.markdown :global(.qrow) {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n align-items: center;\n}\n.markdown :global(.qrow.qrow-grid) {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 6px;\n}\n.markdown :global(.qrow.qrow-grid) :global(.qtag) {\n min-height: 38px;\n width: 100%;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n line-height: 1.2;\n padding: 4px 6px;\n}\n.markdown :global(.qtag) {\n font-size: 10.5px;\n font-weight: 700;\n padding: 4px 9px;\n border-radius: 7px;\n border: 1px solid #e0e4f0;\n background: #f1f3fa;\n color: #475069;\n}\n.markdown :global(.qtag) :global(.qk) {\n opacity: 0.55;\n font-weight: 600;\n margin-right: 3px;\n}\n.markdown :global(.qtag.good) {\n background: #dcfce7;\n border-color: #bbf7d0;\n color: #14532d;\n}\n.markdown :global(.qtag.avg) {\n background: #f1f3fa;\n border-color: #e0e4f0;\n color: #475069;\n}\n.markdown :global(.qtag.low) {\n background: #fef3e0;\n border-color: #fde2b8;\n color: #7c4a03;\n}\n\n/* 3M return line below score tags (Peer Analysis dstock cards) */\n.markdown :global(.dstock) :global(.wa-peer-detail) {\n margin-top: 6px;\n font-size: 11.5px;\n}\n\n/* Scoring note footer */\n.markdown :global(.wa-disc-footer) {\n font-size: 11px;\n color: #737b97;\n line-height: 1.5;\n padding: 10px 14px;\n border-top: 1px solid #eceffa;\n}\n\n.bubbleBot {\n align-self: flex-start;\n background: var(--wac-bot-bg);\n color: #1c2438;\n border-bottom-left-radius: 4px;\n}\n\n.bubbleUser {\n align-self: flex-end;\n background: var(--wac-user-bg);\n color: var(--wac-brand-contrast);\n border-bottom-right-radius: 4px;\n}\n\n/* Card responses: the card supplies its own bg/border/radius, so the bubble\n must add no frame, padding or background around it. */\n.bubbleCard {\n align-self: stretch;\n background: transparent;\n padding: 0;\n border-radius: 0;\n}\n\n.bubbleMeta {\n font-size: 10px;\n color: var(--wac-muted);\n margin-top: 4px;\n text-align: right;\n}\n\n.chipRow {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\n}\n\n.chip {\n padding: 7px 12px;\n background: var(--wac-chip-bg);\n color: var(--wac-chip-fg);\n border: 1px solid transparent;\n border-radius: 999px;\n font-size: 13px;\n cursor: pointer;\n transition: background 0.15s ease, transform 0.15s ease;\n font-family: inherit;\n}\n\n.chip:hover:not(:disabled) {\n background: #d8def2;\n transform: translateY(-1px);\n}\n\n.chipActive {\n background: var(--wac-chip-active-bg);\n color: var(--wac-chip-active-fg);\n}\n\n.chipDisabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.typing {\n align-self: flex-start;\n display: inline-flex;\n gap: 4px;\n padding: 10px 14px;\n background: var(--wac-bot-bg);\n border-radius: 12px;\n border-bottom-left-radius: 4px;\n}\n\n.typingDot {\n width: 7px;\n height: 7px;\n background: var(--wac-muted);\n border-radius: 50%;\n animation: wacBlink 1.2s infinite ease-in-out both;\n}\n\n.typingDot:nth-child(2) {\n animation-delay: 0.18s;\n}\n.typingDot:nth-child(3) {\n animation-delay: 0.36s;\n}\n\n@keyframes wacBlink {\n 0%, 80%, 100% { opacity: 0.3; transform: scale(0.85); }\n 40% { opacity: 1; transform: scale(1); }\n}\n\n.input {\n display: flex;\n gap: 8px;\n padding: 10px 12px;\n border-top: 1px solid var(--wac-border);\n background: var(--wac-bg);\n}\n\n.inputBox {\n flex: 1;\n padding: 12px 16px;\n border: 1.6px solid var(--wac-brand);\n border-radius: 14px;\n font-size: 14px;\n outline: none;\n font-family: inherit;\n background: var(--wac-bg);\n color: var(--wac-fg);\n}\n\n.inputBox:focus {\n border-color: var(--wac-brand);\n background: var(--wac-bg);\n}\n\n.inputBox:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.sendButton {\n padding: 0 20px;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border: none;\n border-radius: 14px;\n font-weight: 700;\n cursor: pointer;\n font-size: 14px;\n font-family: inherit;\n}\n\n.sendButton:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.hiddenFileInput {\n position: absolute;\n width: 0;\n height: 0;\n opacity: 0;\n overflow: hidden;\n pointer-events: none;\n}\n\n.csvButton {\n flex-shrink: 0;\n padding: 0 12px;\n background: var(--wac-chip-bg);\n color: var(--wac-chip-fg);\n border: 1px solid var(--wac-border);\n border-radius: 999px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n font-family: inherit;\n white-space: nowrap;\n}\n\n.csvButton:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.authGate {\n margin: auto;\n text-align: center;\n padding: 32px 24px;\n max-width: 280px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n align-items: center;\n}\n\n.authGateIcon {\n font-size: 36px;\n}\n\n.authGateTitle {\n font-size: 16px;\n font-weight: 600;\n}\n\n.authGateText {\n font-size: 13px;\n color: var(--wac-muted);\n line-height: 1.5;\n}\n\n.authGateButton {\n margin-top: 8px;\n padding: 10px 20px;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border: none;\n border-radius: 999px;\n cursor: pointer;\n font-weight: 600;\n font-size: 14px;\n font-family: inherit;\n}\n\n.authGateDisclaimer {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px dashed var(--wac-border);\n font-size: 11px;\n color: var(--wac-muted);\n line-height: 1.5;\n text-align: left;\n width: 100%;\n}\n\n.authGateDisclaimerTitle {\n font-weight: 700;\n letter-spacing: 0.6px;\n font-size: 10px;\n margin-bottom: 4px;\n color: var(--wac-fg);\n}\n\n.errorBanner {\n background: #fef2f2;\n border: 1px solid #fecaca;\n color: #991b1b;\n padding: 8px 12px;\n font-size: 12px;\n border-radius: 8px;\n margin: 0 14px 8px;\n}\n\n/* ── Greeting popup bubble ─────────────────────────────────────── */\n\n.popupBubble {\n position: fixed;\n bottom: 24px;\n z-index: 2147483646;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border-radius: 12px;\n padding: 12px 36px 12px 14px;\n font-size: 13px;\n line-height: 1.45;\n box-shadow: var(--wac-shadow);\n border: none;\n max-width: 240px;\n animation: wacPopIn 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n\n/* Shared arrow base — direction is set per-position class below */\n.popupBubble::after {\n content: '';\n position: absolute;\n width: 12px;\n height: 12px;\n background: var(--wac-brand);\n}\n\n/* Popup to the LEFT of a right-positioned button — arrow points right */\n.popupBubbleRight {\n right: 94px;\n}\n\n.popupBubbleRight::after {\n right: -7px;\n top: 50%;\n border-top: 1px solid var(--wac-brand);\n border-right: 1px solid var(--wac-brand);\n transform: translateY(-50%) rotate(45deg);\n}\n\n/* Popup to the RIGHT of a left-positioned button — arrow points left */\n.popupBubbleLeft {\n left: 94px;\n}\n\n.popupBubbleLeft::after {\n left: -7px;\n top: 50%;\n border-bottom: 1px solid var(--wac-brand);\n border-left: 1px solid var(--wac-brand);\n transform: translateY(-50%) rotate(45deg);\n}\n\n.popupDismiss {\n position: absolute;\n top: 8px;\n right: 8px;\n background: transparent;\n border: none;\n cursor: pointer;\n font-size: 14px;\n color: var(--wac-brand-contrast);\n line-height: 1;\n padding: 2px 4px;\n border-radius: 4px;\n font-family: inherit;\n opacity: 0.75;\n}\n\n.popupDismiss:hover {\n background: rgba(255, 255, 255, 0.15);\n opacity: 1;\n}\n\n@keyframes wacPopIn {\n 0% { opacity: 0; transform: scale(0.85) translateY(8px); }\n 100% { opacity: 1; transform: scale(1) translateY(0); }\n}\n\n/* ── Menu grid (root chips rendered as cards) ───────────────────── */\n.menuGrid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 6px;\n margin-top: 6px;\n}\n\n.menuItem {\n background: #fff;\n border: 1px solid #e6e9f5;\n border-radius: 14px;\n padding: 14px;\n cursor: pointer;\n text-align: left;\n font-family: inherit;\n transition: transform 0.15s, box-shadow 0.15s, border-color 0.15s;\n}\n\n.menuItem:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 20px -12px rgba(28, 44, 91, 0.45);\n border-color: #d4d9ee;\n}\n\n.menuItemIcon {\n width: 46px;\n height: 46px;\n border-radius: 12px;\n display: grid;\n place-items: center;\n font-size: 22px;\n margin-bottom: 12px;\n}\n\n/* Main-menu SVG icon — mirrors wealth-alpha-final.html .cmd .ico svg */\n.menuItemSvg {\n width: 24px;\n height: 24px;\n stroke: #fff;\n fill: none;\n stroke-width: 2.2;\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n.menuItemTitle {\n font-size: 14px;\n font-weight: 700;\n color: #1c2438;\n line-height: 1.2;\n}\n\n.menuItemSub {\n font-size: 11.5px;\n color: #737b97;\n margin-top: 3px;\n line-height: 1.3;\n}\n\n.menuIconGreen { background: linear-gradient(135deg, #10b981, #059669); }\n.menuIconBlue { background: linear-gradient(135deg, #3b82f6, #2563eb); }\n.menuIconLeaf { background: linear-gradient(135deg, #65c466, #3f9c43); }\n.menuIconRed { background: linear-gradient(135deg, #f43f5e, #e11d48); }\n.menuIconOrange { background: linear-gradient(135deg, #fb923c, #ea580c); }\n.menuIconGold { background: linear-gradient(135deg, #fbbf24, #d97706); }\n.menuIconTeal { background: linear-gradient(135deg, #14b8a6, #0d9488); }\n.menuIconPurple { background: linear-gradient(135deg, #8b5cf6, #7c3aed); }\n\n\n.chat_bubbleBot {\n background-color: var(--wac-bg) !important; \n}"],"mappings":"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","names":["root","headerTitle","menuItemTitle","markdown","floatingButton","positionRight","positionLeft","widget","popupBubbleLeft","popupBubbleRight","header","headerMeta","headerActions","iconButton","body","bubble","bubbleBot","bubbleUser","bubbleCard","bubbleMeta","chipRow","chip","chipActive","chipDisabled","typing","typingDot","wacBlink","input","inputBox","sendButton","hiddenFileInput","csvButton","authGate","authGateIcon","authGateTitle","authGateText","authGateButton","authGateDisclaimer","authGateDisclaimerTitle","errorBanner","popupBubble","popupDismiss","wacPopIn","menuGrid","menuItem","menuItemIcon","menuItemSvg","menuItemSub","menuIconGreen","menuIconBlue","menuIconLeaf","menuIconRed","menuIconOrange","menuIconGold","menuIconTeal","menuIconPurple","chat_bubbleBot"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -21,6 +21,7 @@ interface WACUser {
|
|
|
21
21
|
plan?: string;
|
|
22
22
|
rootChips?: Chip$1[];
|
|
23
23
|
welcomeMessage?: string;
|
|
24
|
+
upgradeUrl?: string;
|
|
24
25
|
}
|
|
25
26
|
interface WACSession {
|
|
26
27
|
token: string;
|
|
@@ -40,6 +41,7 @@ interface BotResponse {
|
|
|
40
41
|
service?: string;
|
|
41
42
|
subService?: string;
|
|
42
43
|
ticker?: string;
|
|
44
|
+
redirectUrl?: string;
|
|
43
45
|
[key: string]: unknown;
|
|
44
46
|
};
|
|
45
47
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ interface WACUser {
|
|
|
21
21
|
plan?: string;
|
|
22
22
|
rootChips?: Chip$1[];
|
|
23
23
|
welcomeMessage?: string;
|
|
24
|
+
upgradeUrl?: string;
|
|
24
25
|
}
|
|
25
26
|
interface WACSession {
|
|
26
27
|
token: string;
|
|
@@ -40,6 +41,7 @@ interface BotResponse {
|
|
|
40
41
|
service?: string;
|
|
41
42
|
subService?: string;
|
|
42
43
|
ticker?: string;
|
|
44
|
+
redirectUrl?: string;
|
|
43
45
|
[key: string]: unknown;
|
|
44
46
|
};
|
|
45
47
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -677,6 +677,9 @@ function useSession(opts = {}) {
|
|
|
677
677
|
// src/styles/chat.module.css
|
|
678
678
|
var chat_default = {
|
|
679
679
|
root: "chat_root",
|
|
680
|
+
headerTitle: "chat_headerTitle",
|
|
681
|
+
menuItemTitle: "chat_menuItemTitle",
|
|
682
|
+
markdown: "chat_markdown",
|
|
680
683
|
floatingButton: "chat_floatingButton",
|
|
681
684
|
positionRight: "chat_positionRight",
|
|
682
685
|
positionLeft: "chat_positionLeft",
|
|
@@ -684,25 +687,27 @@ var chat_default = {
|
|
|
684
687
|
popupBubbleLeft: "chat_popupBubbleLeft",
|
|
685
688
|
popupBubbleRight: "chat_popupBubbleRight",
|
|
686
689
|
header: "chat_header",
|
|
687
|
-
headerTitle: "chat_headerTitle",
|
|
688
690
|
headerMeta: "chat_headerMeta",
|
|
689
691
|
headerActions: "chat_headerActions",
|
|
690
692
|
iconButton: "chat_iconButton",
|
|
691
693
|
body: "chat_body",
|
|
692
694
|
bubble: "chat_bubble",
|
|
693
|
-
markdown: "chat_markdown",
|
|
694
695
|
bubbleBot: "chat_bubbleBot",
|
|
695
696
|
bubbleUser: "chat_bubbleUser",
|
|
697
|
+
bubbleCard: "chat_bubbleCard",
|
|
698
|
+
bubbleMeta: "chat_bubbleMeta",
|
|
696
699
|
chipRow: "chat_chipRow",
|
|
697
700
|
chip: "chat_chip",
|
|
698
701
|
chipActive: "chat_chipActive",
|
|
699
702
|
chipDisabled: "chat_chipDisabled",
|
|
700
703
|
typing: "chat_typing",
|
|
701
704
|
typingDot: "chat_typingDot",
|
|
705
|
+
wacBlink: "chat_wacBlink",
|
|
702
706
|
input: "chat_input",
|
|
703
707
|
inputBox: "chat_inputBox",
|
|
704
708
|
sendButton: "chat_sendButton",
|
|
705
709
|
hiddenFileInput: "chat_hiddenFileInput",
|
|
710
|
+
csvButton: "chat_csvButton",
|
|
706
711
|
authGate: "chat_authGate",
|
|
707
712
|
authGateIcon: "chat_authGateIcon",
|
|
708
713
|
authGateTitle: "chat_authGateTitle",
|
|
@@ -712,7 +717,22 @@ var chat_default = {
|
|
|
712
717
|
authGateDisclaimerTitle: "chat_authGateDisclaimerTitle",
|
|
713
718
|
errorBanner: "chat_errorBanner",
|
|
714
719
|
popupBubble: "chat_popupBubble",
|
|
715
|
-
|
|
720
|
+
wacPopIn: "chat_wacPopIn",
|
|
721
|
+
popupDismiss: "chat_popupDismiss",
|
|
722
|
+
menuGrid: "chat_menuGrid",
|
|
723
|
+
menuItem: "chat_menuItem",
|
|
724
|
+
menuItemIcon: "chat_menuItemIcon",
|
|
725
|
+
menuItemSvg: "chat_menuItemSvg",
|
|
726
|
+
menuItemSub: "chat_menuItemSub",
|
|
727
|
+
menuIconGreen: "chat_menuIconGreen",
|
|
728
|
+
menuIconBlue: "chat_menuIconBlue",
|
|
729
|
+
menuIconLeaf: "chat_menuIconLeaf",
|
|
730
|
+
menuIconRed: "chat_menuIconRed",
|
|
731
|
+
menuIconOrange: "chat_menuIconOrange",
|
|
732
|
+
menuIconGold: "chat_menuIconGold",
|
|
733
|
+
menuIconTeal: "chat_menuIconTeal",
|
|
734
|
+
menuIconPurple: "chat_menuIconPurple",
|
|
735
|
+
chat_bubbleBot: "chat_chat_bubbleBot"
|
|
716
736
|
};
|
|
717
737
|
function AuthGate({ brandName, loginUrl, onLoginClick }) {
|
|
718
738
|
const handleClick = () => {
|
|
@@ -784,9 +804,10 @@ var ALLOWED_TAGS = [
|
|
|
784
804
|
"ol",
|
|
785
805
|
"li",
|
|
786
806
|
"blockquote",
|
|
787
|
-
"span"
|
|
807
|
+
"span",
|
|
808
|
+
"div"
|
|
788
809
|
];
|
|
789
|
-
var ALLOWED_ATTR = ["href", "target", "rel", "class"];
|
|
810
|
+
var ALLOWED_ATTR = ["href", "target", "rel", "class", "style", "data-wa-gauge-pct"];
|
|
790
811
|
var SANITIZE_CFG = {
|
|
791
812
|
ALLOWED_TAGS,
|
|
792
813
|
ALLOWED_ATTR,
|
|
@@ -797,28 +818,116 @@ var SANITIZE_CFG = {
|
|
|
797
818
|
function inlineMarkdownToHtml(text) {
|
|
798
819
|
return text.replace(/^[ \t]*#{1,6}[ \t]+(.+?)[ \t]*$/gm, "<b>$1</b>").replace(/\*\*([^\n<>]+?)\*\*/g, "<b>$1</b>").replace(/__([^\n<>]+?)__/g, "<b>$1</b>").replace(/(?<!\*)\*([^\n*<>]+?)\*(?!\*)/g, "<b>$1</b>").replace(/(?<![_a-zA-Z0-9])_([^\n_<>]+?)_(?![_a-zA-Z0-9])/g, "<i>$1</i>");
|
|
799
820
|
}
|
|
821
|
+
function stripCardDateTime(html) {
|
|
822
|
+
return html.replace(
|
|
823
|
+
/(<span class="wa-card-date">)([^<]*)(<\/span>)/g,
|
|
824
|
+
(_m, open, content, close) => open + content.replace(/,\s*\d{1,2}:\d{2}.*$/, "").trim() + close
|
|
825
|
+
);
|
|
826
|
+
}
|
|
800
827
|
function renderMarkdown(text) {
|
|
801
828
|
if (!text) return "";
|
|
802
829
|
const inlined = inlineMarkdownToHtml(text);
|
|
830
|
+
if (/<div[\s>]/i.test(inlined)) {
|
|
831
|
+
return DOMPurify.sanitize(stripCardDateTime(inlined), SANITIZE_CFG);
|
|
832
|
+
}
|
|
803
833
|
const paragraphs = inlined.split(/\n{2,}/).map((para) => para.replace(/\n/g, "<br>")).filter((p) => p.length > 0);
|
|
804
834
|
const html = paragraphs.length > 1 ? paragraphs.map((p) => `<p>${p}</p>`).join("") : paragraphs[0] ?? "";
|
|
805
|
-
return DOMPurify.sanitize(html, SANITIZE_CFG);
|
|
835
|
+
return DOMPurify.sanitize(stripCardDateTime(html), SANITIZE_CFG);
|
|
836
|
+
}
|
|
837
|
+
var ROOT_MENU_CHIP_IDS = /* @__PURE__ */ new Set([
|
|
838
|
+
"stock_analysis",
|
|
839
|
+
"stock_discovery",
|
|
840
|
+
"new_listings",
|
|
841
|
+
"portfolio_risk",
|
|
842
|
+
"market_forecast",
|
|
843
|
+
"crypto",
|
|
844
|
+
"tradable_picks",
|
|
845
|
+
"peer_compare"
|
|
846
|
+
]);
|
|
847
|
+
var MENU_SUBTITLES = {
|
|
848
|
+
stock_analysis: "Fundamental & technical",
|
|
849
|
+
stock_discovery: "Find promising stocks",
|
|
850
|
+
new_listings: "Track IPOs & new stocks",
|
|
851
|
+
portfolio_risk: "Analyze your portfolio",
|
|
852
|
+
market_forecast: "Outlook & key events",
|
|
853
|
+
crypto: "BTC, ETH & trends",
|
|
854
|
+
tradable_picks: "Short-term setups",
|
|
855
|
+
peer_compare: "Compare peer stocks"
|
|
856
|
+
};
|
|
857
|
+
var MENU_ICON_KEY = {
|
|
858
|
+
stock_analysis: "menuIconGreen",
|
|
859
|
+
stock_discovery: "menuIconBlue",
|
|
860
|
+
new_listings: "menuIconLeaf",
|
|
861
|
+
portfolio_risk: "menuIconRed",
|
|
862
|
+
market_forecast: "menuIconOrange",
|
|
863
|
+
crypto: "menuIconGold",
|
|
864
|
+
tradable_picks: "menuIconTeal",
|
|
865
|
+
peer_compare: "menuIconPurple"
|
|
866
|
+
};
|
|
867
|
+
var MENU_ICON_SVG = {
|
|
868
|
+
stock_analysis: ' <path d="M4 16L9 11L13 15L20 8" /> <path d="M20 8V13" /> <path d="M20 8H15" />',
|
|
869
|
+
stock_discovery: '<circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/>',
|
|
870
|
+
new_listings: '<rect x="5" y="5" width="14" height="14" rx="3"/><path d="M12 8v8"/> <path d="M8 12h8"/>',
|
|
871
|
+
portfolio_risk: '<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10Z"/>',
|
|
872
|
+
market_forecast: '<path d="M13 2 4 14h7l-1 8 9-12h-7l1-8Z"/>',
|
|
873
|
+
crypto: '<path d="M4 20V10M10 20V4M16 20v-7M22 20v-4"/>',
|
|
874
|
+
tradable_picks: '<circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="5"/><circle cx="12" cy="12" r="1.5"/>',
|
|
875
|
+
peer_compare: '<path d="M12 3v18"/><path d="M5 8l-3 6h6z"/><path d="M19 8l-3 6h6z"/>'
|
|
876
|
+
};
|
|
877
|
+
function isRootMenuChips(chips) {
|
|
878
|
+
return chips.length > 0 && chips.every((c) => ROOT_MENU_CHIP_IDS.has(c.id));
|
|
806
879
|
}
|
|
807
880
|
function MessageBubble({ message, onChipClick }) {
|
|
808
881
|
const isBot = message.role === "bot";
|
|
809
|
-
const
|
|
882
|
+
const isCard = isBot && message.content.includes("<div");
|
|
883
|
+
const bubbleClass = isBot ? `${chat_default.bubble} ${isCard ? chat_default.bubbleCard : chat_default.bubbleBot}` : `${chat_default.bubble} ${chat_default.bubbleUser}`;
|
|
884
|
+
const handleMarkdownClick = (e) => {
|
|
885
|
+
const anchor = e.target.closest("a");
|
|
886
|
+
if (!anchor?.href) return;
|
|
887
|
+
e.preventDefault();
|
|
888
|
+
window.location.assign(anchor.href);
|
|
889
|
+
};
|
|
890
|
+
const chips = message.chips ?? [];
|
|
891
|
+
const showMenuGrid = isBot && message.chipsActive && isRootMenuChips(chips);
|
|
810
892
|
return /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column" }, children: [
|
|
811
893
|
/* @__PURE__ */ jsx("div", { className: bubbleClass, children: isBot ? /* @__PURE__ */ jsx(
|
|
812
894
|
"div",
|
|
813
895
|
{
|
|
814
896
|
className: chat_default.markdown,
|
|
815
|
-
dangerouslySetInnerHTML: { __html: renderMarkdown(message.content) }
|
|
897
|
+
dangerouslySetInnerHTML: { __html: renderMarkdown(message.content) },
|
|
898
|
+
onClick: handleMarkdownClick
|
|
816
899
|
}
|
|
817
900
|
) : message.content }),
|
|
818
|
-
|
|
901
|
+
showMenuGrid ? /* @__PURE__ */ jsx("div", { className: chat_default.menuGrid, children: chips.map((chip) => {
|
|
902
|
+
const iconKey = MENU_ICON_KEY[chip.id];
|
|
903
|
+
const iconClass = iconKey && chat_default[iconKey] || "";
|
|
904
|
+
const svgIcon = MENU_ICON_SVG[chip.id];
|
|
905
|
+
return /* @__PURE__ */ jsxs(
|
|
906
|
+
"button",
|
|
907
|
+
{
|
|
908
|
+
type: "button",
|
|
909
|
+
className: chat_default.menuItem,
|
|
910
|
+
onClick: () => onChipClick(chip),
|
|
911
|
+
children: [
|
|
912
|
+
/* @__PURE__ */ jsx("div", { className: `${chat_default.menuItemIcon} ${iconClass}`, children: svgIcon ? /* @__PURE__ */ jsx(
|
|
913
|
+
"svg",
|
|
914
|
+
{
|
|
915
|
+
className: chat_default.menuItemSvg,
|
|
916
|
+
viewBox: "0 0 24 24",
|
|
917
|
+
"aria-hidden": "true",
|
|
918
|
+
dangerouslySetInnerHTML: { __html: svgIcon }
|
|
919
|
+
}
|
|
920
|
+
) : /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: chip.icon }) }),
|
|
921
|
+
/* @__PURE__ */ jsx("div", { className: chat_default.menuItemTitle, children: chip.label }),
|
|
922
|
+
/* @__PURE__ */ jsx("div", { className: chat_default.menuItemSub, children: MENU_SUBTITLES[chip.id] ?? "" })
|
|
923
|
+
]
|
|
924
|
+
},
|
|
925
|
+
chip.id
|
|
926
|
+
);
|
|
927
|
+
}) }) : isBot && chips.length > 0 ? /* @__PURE__ */ jsx(
|
|
819
928
|
ChipRow,
|
|
820
929
|
{
|
|
821
|
-
chips
|
|
930
|
+
chips,
|
|
822
931
|
disabled: !message.chipsActive,
|
|
823
932
|
onClick: onChipClick
|
|
824
933
|
}
|
|
@@ -867,18 +976,6 @@ function ChatBody({
|
|
|
867
976
|
/* @__PURE__ */ jsx("div", { ref: endRef })
|
|
868
977
|
] });
|
|
869
978
|
}
|
|
870
|
-
|
|
871
|
-
// src/utils/time.ts
|
|
872
|
-
function formatCountdown(remainingMs) {
|
|
873
|
-
if (remainingMs <= 0) return "expired";
|
|
874
|
-
const totalSeconds = Math.floor(remainingMs / 1e3);
|
|
875
|
-
const hours = Math.floor(totalSeconds / 3600);
|
|
876
|
-
const minutes = Math.floor(totalSeconds % 3600 / 60);
|
|
877
|
-
const seconds = totalSeconds % 60;
|
|
878
|
-
if (hours > 0) return `${hours}h ${minutes}m left`;
|
|
879
|
-
if (minutes > 0) return `${minutes}m ${seconds}s left`;
|
|
880
|
-
return `${seconds}s left`;
|
|
881
|
-
}
|
|
882
979
|
function ChatHeader({
|
|
883
980
|
brandName,
|
|
884
981
|
remainingMs,
|
|
@@ -887,13 +984,7 @@ function ChatHeader({
|
|
|
887
984
|
onClear
|
|
888
985
|
}) {
|
|
889
986
|
return /* @__PURE__ */ jsxs("div", { className: chat_default.header, children: [
|
|
890
|
-
/* @__PURE__ */
|
|
891
|
-
/* @__PURE__ */ jsx("div", { className: chat_default.headerTitle, children: brandName }),
|
|
892
|
-
showCountdown && remainingMs > 0 ? /* @__PURE__ */ jsxs("div", { className: chat_default.headerMeta, children: [
|
|
893
|
-
"Session: ",
|
|
894
|
-
formatCountdown(remainingMs)
|
|
895
|
-
] }) : null
|
|
896
|
-
] }),
|
|
987
|
+
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("div", { className: chat_default.headerTitle, children: brandName }) }),
|
|
897
988
|
/* @__PURE__ */ jsxs("div", { className: chat_default.headerActions, children: [
|
|
898
989
|
onClear ? /* @__PURE__ */ jsx(
|
|
899
990
|
"button",
|
|
@@ -1009,15 +1100,20 @@ var DEFAULT_BRAND_NAME = "Wealth Alpha AI";
|
|
|
1009
1100
|
var DEFAULT_BRAND_COLOR = "#1a2d5a";
|
|
1010
1101
|
var DEFAULT_AUTH_CHECK = "/me";
|
|
1011
1102
|
var DEFAULT_GREETING = "Hi! I'm your Wealth Alpha AI assistant. How can I help you?";
|
|
1012
|
-
var
|
|
1013
|
-
var CTA_LINE = "Select a quick command below \u2014 or type your query to ask our AI Research Analyst directly.";
|
|
1103
|
+
var CTA_LINE = "Select a quick command below";
|
|
1014
1104
|
var PORTFOLIO_CSV_CHIP_ID = "__portfolio_csv_upload";
|
|
1105
|
+
var UPGRADE_PREMIUM_CHIP_ID = "__upgrade_premium__";
|
|
1106
|
+
function resolvePricingUrl(upgradeUrl) {
|
|
1107
|
+
if (upgradeUrl) return upgradeUrl;
|
|
1108
|
+
if (typeof window !== "undefined") {
|
|
1109
|
+
return `${window.location.origin}/pricing`;
|
|
1110
|
+
}
|
|
1111
|
+
return "";
|
|
1112
|
+
}
|
|
1015
1113
|
function buildWelcome(name, plan) {
|
|
1016
1114
|
const greeting = name ? `Welcome back, ${name}! You have ${plan ? plan : "Premium"} access.` : `Welcome! You have ${plan ? plan : "Premium"} access.`;
|
|
1017
1115
|
return `${greeting}
|
|
1018
1116
|
|
|
1019
|
-
${DISCLAIMER_BLOCK}
|
|
1020
|
-
|
|
1021
1117
|
${CTA_LINE}`;
|
|
1022
1118
|
}
|
|
1023
1119
|
function WealthChat(props) {
|
|
@@ -1045,6 +1141,16 @@ function WealthChat(props) {
|
|
|
1045
1141
|
useEffect(() => {
|
|
1046
1142
|
setMounted(true);
|
|
1047
1143
|
}, []);
|
|
1144
|
+
useEffect(() => {
|
|
1145
|
+
if (typeof document === "undefined") return;
|
|
1146
|
+
const id = "wac-google-fonts";
|
|
1147
|
+
if (document.getElementById(id)) return;
|
|
1148
|
+
const link = document.createElement("link");
|
|
1149
|
+
link.id = id;
|
|
1150
|
+
link.rel = "stylesheet";
|
|
1151
|
+
link.href = "https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Sora:wght@600;700;800&display=swap";
|
|
1152
|
+
document.head.appendChild(link);
|
|
1153
|
+
}, []);
|
|
1048
1154
|
useEffect(() => {
|
|
1049
1155
|
if (!mounted || open || popupShownRef.current) return;
|
|
1050
1156
|
const timer = setTimeout(() => {
|
|
@@ -1129,16 +1235,30 @@ function WealthChat(props) {
|
|
|
1129
1235
|
csvFileRef.current?.click();
|
|
1130
1236
|
return;
|
|
1131
1237
|
}
|
|
1238
|
+
if (chip.id === UPGRADE_PREMIUM_CHIP_ID) {
|
|
1239
|
+
appendUserMessage(chip.label);
|
|
1240
|
+
const pricingUrl = resolvePricingUrl(user?.upgradeUrl);
|
|
1241
|
+
if (pricingUrl && typeof window !== "undefined") {
|
|
1242
|
+
window.location.assign(pricingUrl);
|
|
1243
|
+
}
|
|
1244
|
+
return;
|
|
1245
|
+
}
|
|
1132
1246
|
appendUserMessage(chip.label);
|
|
1133
1247
|
setTyping(true);
|
|
1134
1248
|
try {
|
|
1135
1249
|
const resp = await callChip(chip);
|
|
1136
|
-
if (resp)
|
|
1250
|
+
if (!resp) return;
|
|
1251
|
+
const redirectUrl = resp.metadata?.redirectUrl;
|
|
1252
|
+
if (typeof redirectUrl === "string" && redirectUrl && typeof window !== "undefined") {
|
|
1253
|
+
window.location.assign(redirectUrl);
|
|
1254
|
+
return;
|
|
1255
|
+
}
|
|
1256
|
+
appendBotResponse(resp);
|
|
1137
1257
|
} finally {
|
|
1138
1258
|
setTyping(false);
|
|
1139
1259
|
}
|
|
1140
1260
|
},
|
|
1141
|
-
[touch, deactivatePriorChips, appendUserMessage, callChip, setTyping, appendBotResponse]
|
|
1261
|
+
[touch, deactivatePriorChips, appendUserMessage, callChip, setTyping, appendBotResponse, user?.upgradeUrl]
|
|
1142
1262
|
);
|
|
1143
1263
|
const handleCsvFileSelected = useCallback(
|
|
1144
1264
|
(e) => {
|