@drawnagency/primitives 0.1.104 → 0.1.105
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/components/chat/ChatPanel.d.ts.map +1 -1
- package/dist/components/chat/ChatWidget.d.ts.map +1 -1
- package/dist/components/docfile/DocFileOverlay.d.ts.map +1 -1
- package/dist/components/docfile/DocFilePane.d.ts +4 -3
- package/dist/components/docfile/DocFilePane.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/chat/ChatPanel.tsx +4 -2
- package/src/components/chat/ChatWidget.tsx +4 -1
- package/src/components/docfile/DocFileOverlay.tsx +28 -2
- package/src/components/docfile/DocFilePane.tsx +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatPanel.tsx"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAE5E;;;0DAG0D;AAC1D,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AA+C5D;;kEAEkE;AAClE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhD;AAcD,8EAA8E;AAC9E,wBAAsB,UAAU,CAC9B,IAAI,EAAE;IAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,EACxH,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA6CjG;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAkB,EAAE,IAAiB,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE;IAC/N,IAAI,EAAE,OAAO,CAAC;IACd;uDACmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;4CAEwC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;6EAEyE;IACzE,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;kFAC8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;+DAC2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,
|
|
1
|
+
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatPanel.tsx"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAE5E;;;0DAG0D;AAC1D,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AA+C5D;;kEAEkE;AAClE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhD;AAcD,8EAA8E;AAC9E,wBAAsB,UAAU,CAC9B,IAAI,EAAE;IAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,EACxH,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA6CjG;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAkB,EAAE,IAAiB,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE;IAC/N,IAAI,EAAE,OAAO,CAAC;IACd;uDACmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;4CAEwC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;6EAEyE;IACzE,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;kFAC8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;+DAC2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,kDAufA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatWidget.tsx"],"names":[],"mappings":"AAyBA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,kFAAkF;IAClF,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAWD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAkB,EAAE,QAAQ,EAAE,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatWidget.tsx"],"names":[],"mappings":"AAyBA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,kFAAkF;IAClF,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAWD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAkB,EAAE,QAAQ,EAAE,EAAE,eAAe,2CA4ItJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocFileOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/docfile/DocFileOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAYxD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,SAAS,EACT,MAAc,GACf,EAAE;IAAE,SAAS,EAAE,YAAY,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"DocFileOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/docfile/DocFileOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAYxD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,SAAS,EACT,MAAc,GACf,EAAE;IAAE,SAAS,EAAE,YAAY,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,kDAyDjD"}
|
|
@@ -2,9 +2,10 @@ import type { SiteDocument } from "../../lib/documents";
|
|
|
2
2
|
/**
|
|
3
3
|
* The solid stage: an opaque, flat, bordered pane between the nav edge and the
|
|
4
4
|
* chat edge. Geometry lives in base.css (.doc-file-pane) because it is calc()
|
|
5
|
-
* against doc mode's own 120rem stage band — the band the
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* against doc mode's own 120rem stage band — the band the NAV is pinned to
|
|
6
|
+
* under html.bp-doc-open (NOT the page's 80rem --layout-max-width band, which
|
|
7
|
+
* doc mode never touches; and not the chat, which stays at the viewport edge
|
|
8
|
+
* and is what the pane's `right` gives way to). z-30 — above page content,
|
|
8
9
|
* BELOW the nav and docked chat (z-40) and the mobile nav header / chat sheet
|
|
9
10
|
* (z-50), so all chrome stays reachable. `editor` adds top clearance for the
|
|
10
11
|
* edit route's always-fixed h-16 toolbar.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocFilePane.d.ts","sourceRoot":"","sources":["../../../src/components/docfile/DocFilePane.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAexD
|
|
1
|
+
{"version":3,"file":"DocFilePane.d.ts","sourceRoot":"","sources":["../../../src/components/docfile/DocFilePane.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAexD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,GAAG,EACH,OAAO,EACP,MAAc,GACf,EAAE;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,2CAwL9D"}
|
package/package.json
CHANGED
|
@@ -486,8 +486,10 @@ export default function ChatPanel({ open, closing, animateEnter, onClose, siteNa
|
|
|
486
486
|
// width, so the panel always tucks below it — the toolbar never
|
|
487
487
|
// moves during the open/close slide.
|
|
488
488
|
mode === "docked" && cn(
|
|
489
|
-
// bp-chat-panel is a STABLE hook, not styling
|
|
490
|
-
// docked panel
|
|
489
|
+
// bp-chat-panel is a STABLE hook, not styling — a selector for the
|
|
490
|
+
// docked panel from CSS and e2e. `right-0` is load-bearing in doc
|
|
491
|
+
// mode: unlike the nav, the panel is NOT re-based onto the 120rem
|
|
492
|
+
// stage band and stays at the viewport edge (see base.css).
|
|
491
493
|
"bp-chat-panel fixed right-0 bottom-0 z-40 w-[var(--chat-w)] border-l border-base-200",
|
|
492
494
|
variant === "editor" ? "top-16" : "top-16 xl:top-0",
|
|
493
495
|
"motion-safe:transition-transform motion-safe:duration-300",
|
|
@@ -155,7 +155,10 @@ export default function ChatWidget({ siteName, botName, thinkingPhrases, tasks,
|
|
|
155
155
|
ref={fabRef}
|
|
156
156
|
label={`Chat with ${botName}`}
|
|
157
157
|
column={variant === "editor" ? "editor" : "viewer"}
|
|
158
|
-
|
|
158
|
+
// bp-chat-fab is a STABLE hook, not styling: base.css exempts the chat
|
|
159
|
+
// launcher from doc mode's blanket FAB hide and pins it to the viewport
|
|
160
|
+
// right edge, so the assistant is still reachable over an open document.
|
|
161
|
+
className="bottom-4 bp-chat-fab"
|
|
159
162
|
aria-expanded={open}
|
|
160
163
|
onClick={() => { setUserOpened(true); if (open) closePanel(); else openPanel(); }}
|
|
161
164
|
>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { lazy, Suspense, useEffect, useState } from "react";
|
|
1
|
+
import { lazy, Suspense, useEffect, useRef, useState } from "react";
|
|
2
2
|
import type { SiteDocument } from "../../lib/documents";
|
|
3
3
|
import {
|
|
4
4
|
subscribeDocFile,
|
|
@@ -23,17 +23,43 @@ export default function DocFileOverlay({
|
|
|
23
23
|
}: { documents: SiteDocument[]; editor?: boolean }) {
|
|
24
24
|
const [docs, setDocs] = useState<SiteDocument[] | null>(null);
|
|
25
25
|
const [openId, setOpenId] = useState<string | null>(null);
|
|
26
|
+
// True once SOMEONE ELSE has published a list — this component seeds before
|
|
27
|
+
// subscribing, so every callback below is a later publish (EditorShell's).
|
|
28
|
+
const livePublished = useRef(false);
|
|
26
29
|
|
|
27
30
|
useEffect(() => {
|
|
28
31
|
seedSiteDocuments(documents);
|
|
29
32
|
setDocs(getSiteDocuments());
|
|
30
|
-
return subscribeSiteDocuments(
|
|
33
|
+
return subscribeSiteDocuments((next) => {
|
|
34
|
+
livePublished.current = true;
|
|
35
|
+
setDocs(next);
|
|
36
|
+
});
|
|
31
37
|
}, [documents]);
|
|
32
38
|
|
|
33
39
|
useEffect(() => subscribeDocFile(setOpenId), []);
|
|
34
40
|
|
|
35
41
|
const doc = openId && docs ? (docs.find((d) => d.sectionId === openId) ?? null) : null;
|
|
36
42
|
|
|
43
|
+
// An open id that resolves to NO document must not leave doc mode latched:
|
|
44
|
+
// html.bp-doc-open hides the page content, and the pane — which owns the body
|
|
45
|
+
// scroll lock — never mounts, so the page sits blank-but-scrolling with no way
|
|
46
|
+
// out. The hash is applied unvalidated (`syncFromHash`), and the viewer nav's
|
|
47
|
+
// document entries are plain `#doc=<sectionId>` links, so any stale or
|
|
48
|
+
// hand-edited deep link lands here.
|
|
49
|
+
//
|
|
50
|
+
// Judging that requires a list that can be TRUSTED to be complete, and on
|
|
51
|
+
// /edit the seed is not it: edit/index.astro seeds BUILD-TIME content, and
|
|
52
|
+
// EditorShell replaces it from /api/content after mount. Closing on the seed
|
|
53
|
+
// there would strip the hash out from under a legitimate deep link to any
|
|
54
|
+
// document added since the last deploy — the pane would then never open, even
|
|
55
|
+
// once the live list arrived. So the editor waits for that publish; the
|
|
56
|
+
// viewer's SSR list is already the deployed truth and needs no wait.
|
|
57
|
+
const listIsComplete = docs !== null && (!editor || livePublished.current);
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
if (!listIsComplete || openId === null || doc) return;
|
|
60
|
+
closeDocFile();
|
|
61
|
+
}, [listIsComplete, openId, doc]);
|
|
62
|
+
|
|
37
63
|
// Below the desktop breakpoint a PDF goes to the OS viewer. The row already
|
|
38
64
|
// short-circuits, but a Documents-nav entry lands here, so the guard belongs
|
|
39
65
|
// at the pane too.
|
|
@@ -26,9 +26,10 @@ const barButtonClass =
|
|
|
26
26
|
/**
|
|
27
27
|
* The solid stage: an opaque, flat, bordered pane between the nav edge and the
|
|
28
28
|
* chat edge. Geometry lives in base.css (.doc-file-pane) because it is calc()
|
|
29
|
-
* against doc mode's own 120rem stage band — the band the
|
|
30
|
-
*
|
|
31
|
-
*
|
|
29
|
+
* against doc mode's own 120rem stage band — the band the NAV is pinned to
|
|
30
|
+
* under html.bp-doc-open (NOT the page's 80rem --layout-max-width band, which
|
|
31
|
+
* doc mode never touches; and not the chat, which stays at the viewport edge
|
|
32
|
+
* and is what the pane's `right` gives way to). z-30 — above page content,
|
|
32
33
|
* BELOW the nav and docked chat (z-40) and the mobile nav header / chat sheet
|
|
33
34
|
* (z-50), so all chrome stays reachable. `editor` adds top clearance for the
|
|
34
35
|
* edit route's always-fixed h-16 toolbar.
|