Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 0 additions & 15 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@ PUBLIC_KAPA_INTEGRATION_ID=
# Live Docs Bot example: "Docs Widget" (type WIDGET).
PUBLIC_KAPA_WEBSITE_WIDGET_INTEGRATION_ID=

# Optional Kapa project ID used to build internal conversation links in
# "Create ticket" email drafts:
# https://app.kapa.ai/<PROJECT_ID>/conversations/<THREAD_ID>
# You can find this in the Kapa dashboard URL while viewing the project.
PUBLIC_KAPA_PROJECT_ID=

# RudderStack analytics — required for docs_404 event tracking and page analytics.
# Without these, no analytics events are sent and the weekly 404 monitor will
# report zero data. Set both in the Vercel project environment (all environments).
Expand All @@ -37,12 +31,3 @@ PUBLIC_KAPA_PROJECT_ID=
# directive in vercel.json (a mismatch silently blocks all events in the browser).
PUBLIC_RUDDERSTACK_WRITE_KEY=
PUBLIC_RUDDERSTACK_DATA_PLANE_URL=

# Server-side handoff forwarding endpoint used by /api/support-handoff.
# This should point at the DevX service endpoint that creates Front
# conversations from docs chat handoff requests.
SUPPORT_HANDOFF_ENDPOINT_URL=

# Required when SUPPORT_HANDOFF_ENDPOINT_URL is set. Docs forwards this only
# to the DevX service as the `?secret=` query parameter, not as a bearer token.
SUPPORT_HANDOFF_SHARED_SECRET=
15 changes: 0 additions & 15 deletions astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,6 @@ export default defineConfig({
access: 'public',
optional: true,
}),
PUBLIC_KAPA_PROJECT_ID: envField.string({
context: 'client',
access: 'public',
optional: true,
}),
PUBLIC_RUDDERSTACK_WRITE_KEY: envField.string({
context: 'client',
access: 'public',
Expand All @@ -64,16 +59,6 @@ export default defineConfig({
access: 'public',
optional: true,
}),
SUPPORT_HANDOFF_ENDPOINT_URL: envField.string({
context: 'server',
access: 'secret',
optional: true,
}),
SUPPORT_HANDOFF_SHARED_SECRET: envField.string({
context: 'server',
access: 'secret',
optional: true,
}),
},
},
integrations: [
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
"test:tracking-redirect": "node --test scripts/tracking-redirect.test.mjs",
"test:tracking-routes": "node scripts/validate-tracking-routes.mjs",
"test:kapa-webmcp": "node --test src/lib/kapa-webmcp.test.mjs",
"test:kapa-support-escalation": "node --test src/lib/kapa-support-escalation.test.mjs",
"test:homepage-json-ld": "node scripts/validate-homepage-json-ld.mjs",
"postinstall": "patch-package"
},
Expand Down
277 changes: 12 additions & 265 deletions src/components/KapaChatLauncher.css
Original file line number Diff line number Diff line change
Expand Up @@ -638,50 +638,18 @@
gap: 0.5rem;
margin-top: 0.875rem;
}
.sl-kapa-feedback__handoff {
display: inline-flex;
align-items: center;
justify-content: center;
height: 2.25rem;
padding: 0 0.75rem;
border: 1px solid var(--sl-color-gray-5);
border-radius: var(--sl-radius-sm);
background: var(--sl-color-black);
color: var(--sl-color-gray-1);
font: inherit;
font-size: var(--sl-text-xs);
font-weight: 500;
cursor: pointer;
transition:
border-color 0.15s ease,
background-color 0.15s ease,
color 0.15s ease;
}

.sl-kapa-feedback__handoff:hover {
border-color: var(--warp-control-border-hover);
background: var(--warp-control-bg-hover);
color: var(--sl-color-white);
}

.sl-kapa-feedback__handoff:focus-visible {
outline: 2px solid var(--sl-color-accent-high);
outline-offset: 2px;
}
.sl-kapa-feedback__handoff--submit {
background: var(--sl-color-text-accent);
border-color: var(--sl-color-text-accent);
color: var(--sl-color-black);
}

.sl-kapa-feedback__handoff--submit:hover:not(:disabled) {
border-color: color-mix(in srgb, var(--sl-color-text-accent), var(--sl-color-white) 18%);
background: color-mix(in srgb, var(--sl-color-text-accent), var(--sl-color-white) 8%);
color: var(--sl-color-black);
.sl-kapa-support {
margin: 0.75rem 0 0;
padding-top: 0.75rem;
border-top: 1px solid var(--sl-color-gray-5);
color: var(--sl-color-gray-2);
font-size: var(--sl-text-xs);
line-height: 1.4;
}

.sl-kapa-feedback__handoff--ghost {
background: transparent;
.sl-kapa-support a {
color: var(--sl-color-text-accent);
}

.sl-kapa-error {
Expand Down Expand Up @@ -776,233 +744,12 @@
opacity: 0.5;
cursor: not-allowed;
}
.sl-kapa-handoff-inline {
margin-top: 0.75rem;
padding-top: 0.75rem;
border-top: 1px solid var(--sl-color-gray-5);
display: flex;
flex-direction: column;
gap: 0.5rem;
}

.sl-kapa-handoff-inline label {
font-size: var(--sl-text-xs);
font-weight: 600;
color: var(--sl-color-gray-2);
}

.sl-kapa-handoff-inline__row {
display: grid;
grid-template-columns: minmax(0, 1fr) auto auto;
gap: 0.5rem;
}

.sl-kapa-handoff-inline input {
width: 100%;
min-width: 0;
height: 2.25rem;
border: 1px solid var(--sl-color-gray-5);
border-radius: var(--sl-radius-sm);
background: var(--sl-color-black);
color: var(--sl-color-white);
padding: 0 0.625rem;
font: inherit;
font-size: var(--sl-text-sm);
}

.sl-kapa-handoff-inline input::placeholder {
color: var(--sl-color-gray-3);
}

.sl-kapa-handoff-inline input:focus-visible {
outline: 2px solid var(--sl-color-accent-high);
outline-offset: 2px;
}

.sl-kapa-handoff-inline__status {
margin: 0;
font-size: var(--sl-text-xs);
line-height: 1.4;
}

.sl-kapa-handoff-inline__status--success {
color: #14532d;
background: rgb(220 252 231 / 0.9);
border: 1px solid rgb(74 222 128 / 0.7);
padding: 0.375rem 0.5rem;
border-radius: var(--sl-radius-sm);
}

.sl-kapa-handoff-inline__status--error {
color: #b91c1c;
background: rgb(254 226 226 / 0.9);
border: 1px solid rgb(248 113 113 / 0.8);
padding: 0.375rem 0.5rem;
border-radius: var(--sl-radius-sm);
}

.sl-kapa-handoff-inline__status a {
color: inherit;
text-decoration: underline;
}

@media (prefers-color-scheme: dark) {
.sl-kapa-handoff-inline__status--success {
color: #86efac;
background: rgb(20 83 45 / 0.35);
border-color: rgb(74 222 128 / 0.45);
}
.sl-kapa-handoff-inline__status--error {
color: #fecaca;
background: rgb(127 29 29 / 0.3);
border-color: rgb(248 113 113 / 0.5);
}
}

.sl-kapa-handoff {
margin-top: 0.75rem;
display: flex;
flex-direction: column;
gap: 0.625rem;
}

.sl-kapa-handoff__toggle {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
width: 100%;
height: 2.5rem;
padding: 0 0.875rem;
border: 1px solid var(--sl-color-gray-5);
border-radius: var(--sl-radius-sm);
background: var(--sl-color-black);
color: var(--sl-color-gray-1);
font: inherit;
font-size: var(--sl-text-sm);
font-weight: 500;
cursor: pointer;
transition:
border-color 0.15s ease,
background-color 0.15s ease,
color 0.15s ease;
}

.sl-kapa-handoff__toggle svg {
width: 0.95rem;
height: 0.95rem;
flex: none;
}

.sl-kapa-handoff__toggle:hover {
border-color: var(--warp-control-border-hover);
background: var(--warp-control-bg-hover);
color: var(--sl-color-white);
}

.sl-kapa-handoff__toggle:focus-visible {
outline: 2px solid var(--sl-color-accent-high);
outline-offset: 2px;
}

.sl-kapa-handoff__form {
display: flex;
flex-direction: column;
gap: 0.5rem;
padding: 0.75rem;
border: 1px solid var(--sl-color-gray-5);
border-radius: var(--sl-radius-lg);
background: color-mix(in srgb, var(--sl-color-black), var(--sl-color-gray-6) 28%);
}

.sl-kapa-handoff__form label {
display: flex;
flex-direction: column;
gap: 0.25rem;
}

.sl-kapa-handoff__form label span {
font-size: var(--sl-text-2xs);
color: var(--sl-color-gray-3);
}

.sl-kapa-handoff__form input,
.sl-kapa-handoff__form textarea {
width: 100%;
border: 1px solid var(--sl-color-gray-5);
border-radius: var(--sl-radius-sm);
background: var(--sl-color-black);
color: var(--sl-color-white);
padding: 0.5rem 0.625rem;
font: inherit;
font-size: var(--sl-text-sm);
}

.sl-kapa-handoff__form textarea {
resize: vertical;
min-height: 4rem;
}

.sl-kapa-handoff__form input::placeholder,
.sl-kapa-handoff__form textarea::placeholder {
color: var(--sl-color-gray-3);
}

.sl-kapa-handoff__form input:focus-visible,
.sl-kapa-handoff__form textarea:focus-visible {
outline: 2px solid var(--sl-color-accent-high);
outline-offset: 2px;
}

.sl-kapa-handoff__submit {
margin-top: 0.25rem;
height: 2.5rem;
border: 1px solid var(--sl-color-text-accent);
border-radius: var(--sl-radius-sm);
background: var(--sl-color-text-accent);
color: var(--sl-color-black);
font: inherit;
font-size: var(--sl-text-sm);
font-weight: 600;
cursor: pointer;
transition:
border-color 0.15s ease,
background-color 0.15s ease;
}

.sl-kapa-handoff__submit:hover:not(:disabled) {
border-color: color-mix(in srgb, var(--sl-color-text-accent), var(--sl-color-white) 18%);
background: color-mix(in srgb, var(--sl-color-text-accent), var(--sl-color-white) 8%);
}

.sl-kapa-handoff__submit:focus-visible {
outline: 2px solid var(--sl-color-accent-high);
outline-offset: 2px;
}

.sl-kapa-handoff__submit:disabled {
opacity: 0.55;
cursor: not-allowed;
}

.sl-kapa-handoff__status {
margin: 0;
font-size: var(--sl-text-xs);
line-height: 1.4;
}

.sl-kapa-handoff__status--success {
color: #86efac;
}

.sl-kapa-handoff__status--error {
color: #fecaca;
}

/* Hide the reCAPTCHA badge */
/* Kapa's Chat SDK uses reCAPTCHA to protect chat and feedback requests. */
.grecaptcha-badge {
visibility: hidden;
}

.sl-kapa-meta {
display: flex;
align-items: center;
Expand All @@ -1018,6 +765,7 @@
margin: 0;
line-height: 1.4;
}

.sl-kapa-disclosure-trigger {
border: 0;
padding: 0;
Expand All @@ -1041,7 +789,6 @@
}

.sl-kapa-attribution a,

.sl-kapa-disclosure a {
color: inherit;
}
Expand Down
Loading
Loading