@snagset/server 0.1.34 → 0.1.35
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/routes/account.js +9 -1
- package/dist/routes/account.js.map +1 -1
- package/dist/routes/assignees.js +47 -9
- package/dist/routes/assignees.js.map +1 -1
- package/package.json +1 -1
- package/static/dashboard/assets/{CompositeItem-DOjAZOIw.js → CompositeItem-DpSaUtYZ.js} +1 -1
- package/static/dashboard/assets/{ConfirmDialog-YHdRCMuk.js → ConfirmDialog-s6KLZt6w.js} +1 -1
- package/static/dashboard/assets/{CopyButton-BPFFhzYZ.js → CopyButton-Cqz1MLVB.js} +1 -1
- package/static/dashboard/assets/{FieldItemContext-CvuTIqbu.js → FieldItemContext-4dJ9QpEG.js} +1 -1
- package/static/dashboard/assets/{InstallTag-Dyle6Z7u.js → InstallTag-B4frNgVO.js} +1 -1
- package/static/dashboard/assets/{SaveState-zx4IRIWV.js → SaveState-DfBHRtEq.js} +1 -1
- package/static/dashboard/assets/{_app-BT2PvVrr.js → _app-5y2NMiTw.js} +1 -1
- package/static/dashboard/assets/{_app-CATs1X1F.js → _app-CnifsCfr.js} +1 -1
- package/static/dashboard/assets/{activity-Ja8jqvTl.js → activity-DX3WrmQt.js} +1 -1
- package/static/dashboard/assets/{arrow-left-D-J1WDaF.js → arrow-left-iXAzDNV6.js} +1 -1
- package/static/dashboard/assets/{avatar-JYCiU767.js → avatar-DkFTIwsR.js} +1 -1
- package/static/dashboard/assets/{badge-NV2UvVlq.js → badge-CrUHZwEL.js} +1 -1
- package/static/dashboard/assets/{card-PWIpee1m.js → card-C4v3pSqd.js} +1 -1
- package/static/dashboard/assets/{check-fUN7a3GX.js → check-BKP4SJjJ.js} +1 -1
- package/static/dashboard/assets/{chevron-right-D_gtsnlu.js → chevron-right-BVbfidnK.js} +1 -1
- package/static/dashboard/assets/{copy-ZBdagSqO.js → copy-nRZWPHR1.js} +1 -1
- package/static/dashboard/assets/{dialog-B_kwIiUp.js → dialog-lgIL_ZCX.js} +1 -1
- package/static/dashboard/assets/{dropdown-menu-D5UGpMWY.js → dropdown-menu-DyLLQk8L.js} +1 -1
- package/static/dashboard/assets/{image-off-kQWiBpm4.js → image-off-B6flKQEZ.js} +1 -1
- package/static/dashboard/assets/{index-BCjjK9dr.js → index-DMCyFEmS.js} +3 -3
- package/static/dashboard/assets/{invite-Cn7ntzp8.js → invite-CrR7zqFd.js} +1 -1
- package/static/dashboard/assets/{label-CU7jvj5k.js → label-CL3Ivlhy.js} +1 -1
- package/static/dashboard/assets/{layout-grid-DgutVVEL.js → layout-grid-B-9bb2Av.js} +1 -1
- package/static/dashboard/assets/me-6-FBHysO.js +1 -0
- package/static/dashboard/assets/{parts-Oxy1krsw.js → parts-b71WkkoI.js} +1 -1
- package/static/dashboard/assets/{plus-Cl722ZH_.js → plus-BOeukd4A.js} +1 -1
- package/static/dashboard/assets/s._site-MtCDp62_.js +1 -0
- package/static/dashboard/assets/s._site.comments-vNVUqPN4.js +54 -0
- package/static/dashboard/assets/{s._site.reviewers-BuxVEObS.js → s._site.reviewers-BMYyb10D.js} +1 -1
- package/static/dashboard/assets/{s._site.settings-BLyC2Ix8.js → s._site.settings-BaBm7RJi.js} +1 -1
- package/static/dashboard/assets/{setup-BUjOodJm.js → setup-DjA-0YhC.js} +1 -1
- package/static/dashboard/assets/{sign-in-CppGynIo.js → sign-in-vMnULz18.js} +1 -1
- package/static/dashboard/assets/{sign-up-BGy3UTxi.js → sign-up-K_HV-_C8.js} +1 -1
- package/static/dashboard/assets/{sites-CzRwDpMY.js → sites-Dw-qQxr1.js} +1 -1
- package/static/dashboard/assets/{studio-DepK2GJ4.js → studio-CBGrW0G1.js} +1 -1
- package/static/dashboard/assets/studio-DcijgVQL.js +1 -0
- package/static/dashboard/assets/{studio.index-C4hVZYkE.js → studio.index-D-9QUrvv.js} +1 -1
- package/static/dashboard/assets/{studio.integrations-2-WJQjiK.js → studio.integrations-Djhl8gKq.js} +1 -1
- package/static/dashboard/assets/{studio.members-CMxEJYg1.js → studio.members-DaS0HWwE.js} +1 -1
- package/static/dashboard/assets/{sun-DDSRise2.js → sun-ygOg7Lon.js} +1 -1
- package/static/dashboard/assets/{switch-L2_Pf-6w.js → switch-CYLwE1-9.js} +1 -1
- package/static/dashboard/assets/{table-fR4tWQ4-.js → table-BgojscGP.js} +1 -1
- package/static/dashboard/assets/{useAriaLabelledBy-Bk7BENOF.js → useAriaLabelledBy-Ce10PDSC.js} +1 -1
- package/static/dashboard/assets/{useBaseQuery-CoqlgX-x.js → useBaseQuery-BI_bJwNl.js} +1 -1
- package/static/dashboard/assets/useQuery-Cl9FITTP.js +1 -0
- package/static/dashboard/assets/useRender-Ck8DP-Z3.js +1 -0
- package/static/dashboard/assets/{useValueChanged-BhvEiD3-.js → useValueChanged-Dh5Yg1r8.js} +1 -1
- package/static/dashboard/assets/{users-STxJg0L8.js → users-BXCV1C3P.js} +1 -1
- package/static/dashboard/assets/{welcome-D7-mGhDy.js → welcome-C9fdUqeW.js} +1 -1
- package/static/dashboard/assets/{widget-signin-jj3P3IbD.js → widget-signin-DiXxk1Ln.js} +1 -1
- package/static/dashboard/assets/{you-BMCOM6zE.js → you-CZGeTvq7.js} +1 -1
- package/static/dashboard/assets/{zod-DbWDuTiO.js → zod-khKoKeAB.js} +1 -1
- package/static/dashboard/index.html +1 -1
- package/static/widget/build.json +2 -2
- package/static/widget/snag.js +1 -1
- package/static/widget/snag.runtime.js +1 -1
- package/static/dashboard/assets/me-ttfbX4Cb.js +0 -1
- package/static/dashboard/assets/s._site-DI7lRsnw.js +0 -1
- package/static/dashboard/assets/s._site.comments-BLiaZNHo.js +0 -54
- package/static/dashboard/assets/studio-BJa7hKy2.js +0 -1
- package/static/dashboard/assets/useQuery-6QR_MT4t.js +0 -1
- package/static/dashboard/assets/useRender-BybHPfHo.js +0 -1
package/dist/routes/account.js
CHANGED
|
@@ -31,7 +31,15 @@ export function accountRoutes(deps) {
|
|
|
31
31
|
return fail(c, 401, "unauthorized", "Sign in to the dashboard first.");
|
|
32
32
|
const body = (await c.req.json().catch(() => null));
|
|
33
33
|
const name = typeof body?.name === "string" ? body.name.trim().slice(0, 120) : "";
|
|
34
|
-
await inOrg(sql, owner.orgId, (tx) =>
|
|
34
|
+
await inOrg(sql, owner.orgId, async (tx) => {
|
|
35
|
+
await tx `UPDATE users SET name = ${name}, updated_at = now() WHERE id = ${owner.userId}`;
|
|
36
|
+
// The member's reviewer row on every site carries a COPY of the name
|
|
37
|
+
// (studioReviewers.ts writes it once, falling back to the email), and
|
|
38
|
+
// the assignee menu, the widget and assignment mail all read that copy.
|
|
39
|
+
// Without this a member who set their name kept showing as their
|
|
40
|
+
// address everywhere but the account page.
|
|
41
|
+
await tx `UPDATE reviewers SET name = ${name || owner.email} WHERE user_id = ${owner.userId}`;
|
|
42
|
+
});
|
|
35
43
|
return c.json({ user: { email: owner.email, name, role: owner.role } });
|
|
36
44
|
});
|
|
37
45
|
app.post("/api/v1/me/password", async (c) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/routes/account.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/routes/account.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/assignees.js
CHANGED
|
@@ -45,6 +45,9 @@ export function shapeReviewer(r, withEmail) {
|
|
|
45
45
|
// studio" above "people who have commented". NOT a permission.
|
|
46
46
|
isTeam: !!r["is_team"],
|
|
47
47
|
isMe: !!r["is_me"],
|
|
48
|
+
// An MCP agent writes as a guest-kind reviewer; the dropdown lists it
|
|
49
|
+
// apart from the people, so "the maintainer's Claude Code" is not read as a client.
|
|
50
|
+
...(r["is_agent"] ? { isAgent: true } : {}),
|
|
48
51
|
};
|
|
49
52
|
}
|
|
50
53
|
export function assigneeRoutes(deps) {
|
|
@@ -73,19 +76,54 @@ export function assigneeRoutes(deps) {
|
|
|
73
76
|
const q = (c.req.query("q") ?? "").trim().slice(0, 80);
|
|
74
77
|
const limit = Math.min(Math.max(Number(c.req.query("limit")) || 100, 1), 200);
|
|
75
78
|
const rows = await inOrg(p.org_id, (tx) => tx `
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
+
WITH pool AS (
|
|
80
|
+
SELECT r.id, r.name, r.email, r.kind, r.avatar_url, r.is_agent, r.last_seen_at,
|
|
81
|
+
(r.user_id IS NOT NULL) AS is_team,
|
|
82
|
+
${asOwner ? tx `(r.user_id = ${owner.userId}::uuid)` : tx `(r.id = ${session.sub}::uuid)`} AS is_me,
|
|
83
|
+
/*
|
|
84
|
+
* ONE ROW PER PERSON, not per identity. A guest is a new
|
|
85
|
+
* reviewer in every browser (the holder lives in that
|
|
86
|
+
* browser's storage), so one client on a laptop, a phone and
|
|
87
|
+
* a private window was "Morris" three times — and a colleague
|
|
88
|
+
* who commented before signing in was there twice. Rows fold
|
|
89
|
+
* by: the studio member they match (by email, or by name),
|
|
90
|
+
* else their email, else their name, case and spacing aside.
|
|
91
|
+
* Agents never fold: each token is its own writer.
|
|
92
|
+
*/
|
|
93
|
+
CASE
|
|
94
|
+
WHEN r.user_id IS NOT NULL THEN 'u:' || r.user_id
|
|
95
|
+
WHEN r.is_agent THEN 'a:' || r.id
|
|
96
|
+
WHEN m.user_id IS NOT NULL THEN 'u:' || m.user_id
|
|
97
|
+
WHEN r.email IS NOT NULL AND r.email <> '' THEN 'e:' || lower(r.email)
|
|
98
|
+
ELSE 'n:' || lower(btrim(r.name))
|
|
99
|
+
END AS person
|
|
100
|
+
FROM reviewers r
|
|
101
|
+
LEFT JOIN LATERAL (
|
|
102
|
+
SELECT sm.user_id FROM reviewers sm
|
|
103
|
+
WHERE sm.project_id = r.project_id AND sm.user_id IS NOT NULL AND r.user_id IS NULL AND NOT r.is_agent
|
|
104
|
+
AND ((r.email IS NOT NULL AND lower(sm.email) = lower(r.email))
|
|
105
|
+
OR lower(btrim(sm.name)) = lower(btrim(r.name)))
|
|
106
|
+
LIMIT 1
|
|
107
|
+
) m ON true
|
|
108
|
+
WHERE r.project_id = ${p.id}::uuid
|
|
109
|
+
AND ${inPool(tx)}
|
|
110
|
+
),
|
|
111
|
+
people AS (
|
|
112
|
+
-- The studio member's own row wins a fold, then the most recently
|
|
113
|
+
-- active identity: that is the one an assignment mail should reach.
|
|
114
|
+
SELECT DISTINCT ON (person) *
|
|
115
|
+
FROM pool
|
|
116
|
+
ORDER BY person, is_team DESC, is_me DESC, last_seen_at DESC
|
|
117
|
+
)
|
|
118
|
+
SELECT id, name, email, kind, avatar_url, is_agent, is_team, is_me,
|
|
79
119
|
count(*) OVER () AS total
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
AND ${inPool(tx)}
|
|
83
|
-
${q ? tx `AND (r.name ILIKE ${q + "%"} OR r.email ILIKE ${q + "%"})` : tx ``}
|
|
120
|
+
FROM people
|
|
121
|
+
${q ? tx `WHERE (name ILIKE ${q + "%"} OR email ILIKE ${q + "%"})` : tx ``}
|
|
84
122
|
-- The studio first (you assign to a colleague more often than to
|
|
85
123
|
-- anyone else), then most recently active, which puts the person who
|
|
86
124
|
-- just commented at the top of the list you opened because they did.
|
|
87
|
-
|
|
88
|
-
|
|
125
|
+
ORDER BY is_team DESC, is_agent ASC, last_seen_at DESC
|
|
126
|
+
LIMIT ${limit}
|
|
89
127
|
`);
|
|
90
128
|
c.header("Cache-Control", "private, max-age=30");
|
|
91
129
|
return c.json({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assignees.js","sourceRoot":"","sources":["../../src/routes/assignees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAiCjD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,MAAM,CAAC,CAA0B;IAC/C,OAAO,CAAC,CAAA;;;iFAGuE,CAAC;AAClF,CAAC;AAED,SAAS,IAAI,CAAC,CAAM,EAAE,MAAc,EAAE,IAAY,EAAE,OAAe,EAAE,OAAiB;IACpF,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,EAC5F,MAAa,CACd,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,aAAa,CAAC,CAA0B,EAAE,SAAkB;IAC1E,OAAO;QACL,EAAE,EAAE,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC;QAClC,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,uEAAuE;QACvE,+DAA+D;QAC/D,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"assignees.js","sourceRoot":"","sources":["../../src/routes/assignees.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as l,d as O,e as M,a4 as w,j as T,aH as H,a7 as _,E as j,aG as S,i as k}from"./index-
|
|
1
|
+
import{r as l,d as O,e as M,a4 as w,j as T,aH as H,a7 as _,E as j,aG as S,i as k}from"./index-DMCyFEmS.js";const Y=l.createContext(void 0);function K(){return l.useContext(Y)?.direction??"ltr"}const y=l.createContext({register:()=>{},unregister:()=>{},subscribeMapChange:()=>()=>{},nextIndexRef:{current:0}});function B(){return l.useContext(y)}function F(s={}){const{guess:o,label:e,metadata:r,textRef:f,index:t}=s,{register:i,unregister:u,subscribeMapChange:d,nextIndexRef:h}=B(),c=l.useRef(-1),[g,C]=l.useState(t==null&&o?()=>{if(c.current===-1){const x=h.current;h.current+=1,c.current=x}return c.current}:-1),v=t??g,R=l.useRef(null),E=l.useCallback(x=>{const b=R.current;b&&u(b),R.current=x,x&&i(x,{metadata:r??null,index:t??null,label:e,textRef:f})},[t,i,u,r,e,f]);return O(()=>{if(t==null)return d(x=>{const b=R.current?x.get(R.current)?.index:null;b!=null&&C(b)})},[t,d]),{ref:E,index:v}}function Q(s){const{children:o,elementsRef:e,labelsRef:r,onMapChange:f}=s,t=M(f),[,i]=l.useState(!1),u=w(U).current,d=w(G).current,h=l.useRef(0),c=l.useRef(!0),g=l.useRef([]),C=l.useRef(null),v=M(()=>{c.current||(c.current=!0,i(n=>!n))}),R=M((n,p)=>{d.set(n,p),v()}),E=M(n=>{d.delete(n),v()}),x=M(n=>{const p=new Map;return e.current.length=0,r&&(r.current.length=0),n.forEach(a=>{p.set(a.element,{...a.registration.metadata??{},index:a.index}),e.current[a.index]=a.element,r&&(r.current[a.index]=a.registration.label!==void 0?a.registration.label:a.registration.textRef?.current?.textContent??a.element.textContent)}),h.current=e.current.length,p});function b(n){if(C.current?.disconnect(),C.current=null,typeof MutationObserver!="function"||n.length<2)return;const p=new MutationObserver(m=>{if(!J(m))return;let I=null;for(const L of n)if(L.isConnected){if(I&&D(I,L)>0){p.disconnect(),v();return}I=L}});C.current=p;const a=new Set;for(let m=1;m<n.length;m+=1){const I=z(n[m-1],n[m]);I&&a.add(I)}a.forEach(m=>p.observe(m,{childList:!0}))}const N=M(()=>{const[n,p]=W(d),a=x(n);b(p),g.current=n,c.current=!1,u.forEach(m=>m(a)),t(a)});O(()=>(c.current||x(g.current),()=>{e.current=[],r&&(r.current=[])}),[e,r,x]),O(()=>{c.current&&N()}),O(()=>()=>{C.current?.disconnect(),c.current=!0},[]);const P=M(n=>(u.add(n),()=>{u.delete(n)})),A=l.useMemo(()=>({register:R,unregister:E,subscribeMapChange:P,nextIndexRef:h}),[R,E,P,h]);return T.jsx(y.Provider,{value:A,children:o})}function G(){return new Map}function U(){return new Set}function W(s){const o=new Set,e=[],r=[];s.forEach((t,i)=>{if(!i.isConnected)return;const u=t.index,d={index:u??-1,element:i,registration:t};u===null?r.push(d):u>=0&&(o.add(u),e.push(d))});let f=0;return r.sort((t,i)=>D(t.element,i.element)),r.forEach(t=>{for(;o.has(f);)f+=1;t.index=f,e.push(t),f+=1}),o.size>0&&e.sort((t,i)=>t.index-i.index),[e,r.map(t=>t.element)]}function z(s,o){let e=s.parentElement;for(;e&&!e.contains(o);)e=e.parentElement;return e}function J(s){for(const o of s)for(let e=0;e<o.removedNodes.length;e+=1)if(o.removedNodes[e].isConnected)return!0;return!1}function D(s,o){return s.compareDocumentPosition(o)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1}function V(s={}){const{highlightItemOnHover:o,highlightedIndex:e,onHighlightedIndexChange:r}=H(),{ref:f,index:t}=F(s),i=e===t,u=l.useRef(null),d=_(f,u);return{compositeProps:{tabIndex:i?0:-1,onFocus(){r(t)},onMouseMove(){const c=u.current;if(!o||!c)return;const g=c.hasAttribute("disabled")||c.ariaDisabled==="true";!i&&!g&&c.focus()}},compositeRef:d,index:t}}function X(s){const{render:o,className:e,style:r,state:f=j,props:t=S,refs:i=S,metadata:u,stateAttributesMapping:d,tag:h="div",...c}=s,{compositeProps:g,compositeRef:C}=V({metadata:u});return k(h,s,{state:f,ref:[C,...i],props:[g,...t,c],stateAttributesMapping:d})}export{Q as C,F as a,X as b,K as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as i,j as e,B as x}from"./index-
|
|
1
|
+
import{r as i,j as e,B as x}from"./index-DMCyFEmS.js";import{E as u,G as g,I as C,H as D,J as v,K as b}from"./dialog-lgIL_ZCX.js";import{L as E,I}from"./label-CL3Ivlhy.js";function T({open:t,onOpenChange:o,title:m,description:r,children:h,confirmLabel:j,confirmWord:l,busy:s=!1,onConfirm:p}){const[n,c]=i.useState(""),d=i.useId();i.useEffect(()=>{t&&c("")},[t]);const f=!l||n.trim()===l;return e.jsx(u,{open:t,onOpenChange:a=>{!a&&s||o(a)},children:e.jsx(g,{showCloseButton:!1,children:e.jsxs("form",{className:"flex flex-col gap-4",onSubmit:a=>{a.preventDefault(),f&&!s&&p()},children:[e.jsxs(C,{children:[e.jsx(D,{children:m}),r&&e.jsx(v,{children:r})]}),h,l&&e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsxs(E,{htmlFor:d,children:["Type ",e.jsx("b",{className:"font-semibold text-foreground",children:l})," to confirm"]}),e.jsx(I,{id:d,value:n,autoComplete:"off",spellCheck:!1,disabled:s,onChange:a=>c(a.target.value)})]}),e.jsxs(b,{children:[e.jsx(x,{type:"button",variant:"outline",disabled:s,onClick:()=>o(!1),children:"Cancel"}),e.jsx(x,{type:"submit",variant:"destructive",loading:s,disabled:!f,children:s?"Working…":j})]})]})})})}export{T as C};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as n,j as t,B as c}from"./index-
|
|
1
|
+
import{r as n,j as t,B as c}from"./index-DMCyFEmS.js";import{C}from"./check-BKP4SJjJ.js";import{C as m}from"./copy-nRZWPHR1.js";function l({text:r,label:e="Copy",withText:s=!1,size:a="icon-sm",className:p}){const[o,i]=n.useState(!1);return t.jsxs(c,{type:"button",variant:"outline",size:s?"sm":a,className:p,"aria-label":o?"Copied":e,onClick:()=>{navigator.clipboard?.writeText(r).catch(()=>{}),i(!0),setTimeout(()=>i(!1),1500)},children:[o?t.jsx(C,{}):t.jsx(m,{}),s&&(o?"Copied":e)]})}export{l as C};
|
package/static/dashboard/assets/{FieldItemContext-CvuTIqbu.js → FieldItemContext-4dJ9QpEG.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as t}from"./index-
|
|
1
|
+
import{r as t}from"./index-DMCyFEmS.js";const e=t.createContext({disabled:!1});function r(){return t.useContext(e)}export{r as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as o,j as e,B as i,aT as n}from"./index-
|
|
1
|
+
import{r as o,j as e,B as i,aT as n}from"./index-DMCyFEmS.js";import{C as c}from"./check-BKP4SJjJ.js";import{C as l}from"./copy-nRZWPHR1.js";function p(t){return`<script src="${location.origin}/snag.js" ${n("site")}="${t}" defer><\/script>`}function g({uid:t}){const[r,a]=o.useState(!1),s=p(t);return e.jsxs("div",{className:"relative rounded-md border border-border bg-background px-3 py-2.5 pr-11 font-mono text-[12.5px] leading-relaxed",children:[e.jsx("code",{className:"whitespace-pre-wrap break-all",children:s}),e.jsx(i,{variant:"ghost",size:"icon-sm",className:"absolute right-1.5 top-1.5","aria-label":r?"Copied":"Copy the tag",onClick:()=>{navigator.clipboard?.writeText(s),a(!0),setTimeout(()=>a(!1),1500)},children:r?e.jsx(c,{}):e.jsx(l,{})})]})}export{g as I};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r,j as e,aS as o}from"./index-
|
|
1
|
+
import{r,j as e,aS as o}from"./index-DMCyFEmS.js";function l({saving:s,savedAt:t}){const[i,a]=r.useState(!1);return r.useEffect(()=>{if(!t)return;a(!0);const n=setTimeout(()=>a(!1),1800);return()=>clearTimeout(n)},[t]),s?e.jsxs("span",{className:"inline-flex items-center gap-1.5 text-[12.5px] text-muted-foreground","aria-live":"polite",children:[e.jsx(o,{className:"size-3.5 animate-spin","aria-hidden":"true"}),"Saving"]}):e.jsx("span",{className:"text-[12.5px] text-muted-foreground","aria-live":"polite",children:i?"Saved":""})}export{l as S};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e,u as n,G as a,B as r}from"./index-
|
|
1
|
+
import{j as e,u as n,G as a,B as r}from"./index-DMCyFEmS.js";function i({error:s}){const t=n(),o=s instanceof Error?s.message:"Something went wrong.";return e.jsx(a,{children:e.jsxs("div",{className:"flex flex-col items-start gap-3",children:[e.jsx("h1",{className:"m-0 text-lg font-semibold",children:"Could not load the dashboard"}),e.jsx("p",{className:"m-0 text-muted-foreground",children:o}),e.jsx(r,{variant:"outline",size:"sm",onClick:()=>void t.invalidate(),children:"Try again"})]})})}const m=({error:s})=>e.jsx(i,{error:s});export{m as errorComponent};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{u as pt,a as gt,b as ht,c as I,r as o,d as z,e as le,g as ft,j as e,B as J,f as w,h as se,m as be,E as xt,i as ve,k as ge,l as mt,n as bt,o as ne,S as vt,p as Z,q as jt,L as _,s as yt,t as _e,M as St,v as wt,w as Nt,x as Ct,y as kt,O as Tt}from"./index-
|
|
1
|
+
import{u as pt,a as gt,b as ht,c as I,r as o,d as z,e as le,g as ft,j as e,B as J,f as w,h as se,m as be,E as xt,i as ve,k as ge,l as mt,n as bt,o as ne,S as vt,p as Z,q as jt,L as _,s as yt,t as _e,M as St,v as wt,w as Nt,x as Ct,y as kt,O as Tt}from"./index-DMCyFEmS.js";import{u as He}from"./useQuery-Cl9FITTP.js";import{T as Pt,i as ze,a as Rt,D as Mt,b as Et,c as Ot,X as Dt,d as It,e as At,f as _t,g as Ht,R as zt,p as Lt,h as $t,j as Bt,k as Ft,P as Ut,l as qt,u as Gt,m as Vt,n as Kt,o as Yt,q as Wt,r as Xt,s as Qt,t as Jt,v as Zt,w as es,x as ts,y as ss,z as ns,A as as,F as rs,B as os,C as is,E as Le,G as $e,H as Be,I as ls,J as ds,K as cs}from"./dialog-lgIL_ZCX.js";import{c as B,n as Fe,g as us,a as he,t as ps,d as gs,i as hs,u as fs,b as de,L as xs,I as ms}from"./label-CL3Ivlhy.js";import{g as fe,u as bs,a as vs,b as js,s as ys,c as Ss,d as ws,e as Ns,f as Cs,h as ks,S as Ue,E as Q,D as ae,i as re,j as oe,k as je,l as ee,m as D,n as V,o as Ts,p as ce}from"./dropdown-menu-DyLLQk8L.js";import{u as qe}from"./useRender-Ck8DP-Z3.js";import{A as Ps,a as Rs}from"./avatar-DkFTIwsR.js";import{S as Ms,i as Es,a as Os}from"./labels--UUyt9uB.js";import{u as Ge}from"./me-6-FBHysO.js";import{L as te}from"./layout-grid-B-9bb2Av.js";import{U as xe}from"./users-BXCV1C3P.js";import{c as Ds}from"./update-duXzIzFS.js";import{P as Ve}from"./plus-BOeukd4A.js";import{M as Is,S as As,a as _s}from"./sun-ygOg7Lon.js";import"./useBaseQuery-BI_bJwNl.js";import"./check-BKP4SJjJ.js";import"./CompositeItem-DpSaUtYZ.js";import"./useValueChanged-Dh5Yg1r8.js";function Hs(t){const s=pt({warn:t?.router===void 0}),n=t?.router||s;return gt(n.stores.__store,ht(t,n))}/**
|
|
2
2
|
* @license lucide-react v1.39.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Q as g,T as f,U as p,o as v,j as e,B as m,V as N,L as j,W as P}from"./index-
|
|
1
|
+
import{Q as g,T as f,U as p,o as v,j as e,B as m,V as N,L as j,W as P}from"./index-DMCyFEmS.js";import{Q as y,u as b}from"./useBaseQuery-BI_bJwNl.js";import{P as w,S}from"./parts-b71WkkoI.js";import{b as R,c as E,S as k}from"./labels--UUyt9uB.js";import{u as F}from"./me-6-FBHysO.js";import"./card-C4v3pSqd.js";var M=class extends y{constructor(s,r){super(s,r)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(s){s._type="infinite",super.setOptions(s)}getOptimisticResult(s){return s._type="infinite",super.getOptimisticResult(s)}fetchNextPage(s){return this.fetch({...s,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(s){return this.fetch({...s,meta:{fetchMore:{direction:"backward"}}})}createResult(s,r){const{state:i}=s,l=super.createResult(s,r),{isFetching:o,isRefetching:n,isError:u,isRefetchError:d}=l,t=i.fetchMeta?.fetchMore?.direction,c=u&&t==="forward",a=o&&t==="forward",h=u&&t==="backward",x=o&&t==="backward";return{...l,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:f(r,i.data),hasPreviousPage:g(r,i.data),isFetchNextPageError:c,isFetchingNextPage:a,isFetchPreviousPageError:h,isFetchingPreviousPage:x,isRefetchError:d&&!c&&!h,isRefetching:n&&!a&&!x}}};function A(s,r){return b(s,M)}const T=[{value:"unresolved",label:"Needs attention"},...E.map(s=>({value:s,label:k[s]})),{value:"all",label:"Everything"}];function C(s,r=new Date){const i=new Date(s),l=n=>new Date(n.getFullYear(),n.getMonth(),n.getDate()).getTime(),o=Math.round((l(r)-l(i))/864e5);return o<=0?"Today":o===1?"Yesterday":o<7?i.toLocaleDateString(void 0,{weekday:"long"}):i.toLocaleDateString(void 0,{day:"numeric",month:"long"})}function U(){const s=F(),{status:r="unresolved",site:i}=p.useSearch(),l=v({from:"/activity"}),o=t=>void l({search:c=>({...c,...t}),replace:!0}),n=A(P(r,i)),u=n.data?.pages.flatMap(t=>t.data)??[],d=[];for(const t of u){const c=C(t.updatedAt),a=d[d.length-1];a?.day===c?a.rows.push(t):d.push({day:c,rows:[t]})}return e.jsxs("div",{className:"flex flex-col gap-5 p-7",children:[e.jsx(w,{title:"Activity",sub:`Every site, newest first${i?"":" — all of them"}`}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[T.map(t=>e.jsx(m,{size:"sm",variant:r===t.value?"default":"outline",onClick:()=>o({status:t.value}),children:t.label},t.value)),e.jsx("div",{className:"flex-1"}),e.jsxs("label",{className:"flex items-center gap-2 text-[13px] text-muted-foreground",children:["Site",e.jsxs("select",{"aria-label":"Site",value:i??"",onChange:t=>o({site:t.target.value||void 0}),className:"h-8 rounded-md border border-input bg-background px-2.5 text-[13px] text-foreground",children:[e.jsx("option",{value:"",children:"All sites"}),s.projects.map(t=>e.jsx("option",{value:t.uid,children:t.name},t.uid))]})]})]}),n.isPending&&e.jsx(N,{rows:4}),n.isError&&e.jsx("p",{className:"m-0 text-[13px] text-destructive",children:"Could not read the feed. Reload to try again."}),n.isSuccess&&u.length===0&&e.jsx("p",{className:"m-0 text-[13px] text-muted-foreground",children:r==="resolved"?"Nothing has been resolved yet — this is where finished comments go.":r==="unresolved"?"Nothing needs attention. Every comment on every site is resolved.":"No comments yet on any site."}),d.map(({day:t,rows:c})=>e.jsxs("section",{className:"flex flex-col gap-2",children:[e.jsx("h2",{className:"m-0 text-[12px] font-medium uppercase tracking-wide text-muted-foreground",children:t}),e.jsx("ul",{className:"m-0 flex list-none flex-col gap-1.5 p-0",children:c.map(a=>e.jsx("li",{children:e.jsxs(j,{to:"/s/$site/comments",params:{site:a.site.uid},search:{thread:a.key},className:"flex flex-col gap-1 rounded-md border border-border px-3 py-2.5 no-underline transition-colors hover:bg-muted/60",children:[e.jsxs("span",{className:"flex flex-wrap items-center gap-x-2.5 gap-y-1 text-[13px]",children:[e.jsx(S,{status:a.status}),e.jsx("span",{className:"font-medium text-foreground",children:a.site.name}),e.jsx("code",{className:"font-mono text-[12px] text-muted-foreground",children:a.route}),e.jsx("span",{className:"flex-1"}),e.jsx("span",{className:"text-[12px] text-muted-foreground",children:R(a.updatedAt)})]}),a.latest?.body&&e.jsxs("span",{className:"line-clamp-2 text-[13px] text-foreground",children:[e.jsxs("span",{className:"text-muted-foreground",children:[a.latest.author??a.createdBy.name,": "]}),a.latest.body]}),e.jsxs("span",{className:"flex flex-wrap items-center gap-x-2 text-[12px] text-muted-foreground",children:[e.jsx("span",{className:"font-mono",children:a.key}),e.jsx("span",{children:"·"}),e.jsxs("span",{children:[a.commentCount," ",a.commentCount===1?"comment":"comments"]}),a.assignee&&e.jsxs(e.Fragment,{children:[e.jsx("span",{children:"·"}),e.jsx("span",{children:a.assignee})]})]})]})},a.id))})]},t)),n.hasNextPage&&e.jsx("div",{children:e.jsx(m,{variant:"outline",size:"sm",disabled:n.isFetchingNextPage,onClick:()=>void n.fetchNextPage(),children:n.isFetchingNextPage?"Reading…":"Show older"})})]})}export{U as component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as a,h as b,i as f,j as d,f as m}from"./index-
|
|
1
|
+
import{r as a,h as b,i as f,j as d,f as m}from"./index-DMCyFEmS.js";import{w as A}from"./dialog-lgIL_ZCX.js";const x=a.createContext(void 0);function z(){const e=a.useContext(x);if(e===void 0)throw new Error(b(13));return e}const g={imageLoadingStatus:()=>null},R=a.forwardRef(function(t,r){const{className:v,render:p,style:s,...c}=t,[n,o]=a.useState("idle"),i={imageLoadingStatus:n},u=a.useMemo(()=>({imageLoadingStatus:n,setImageLoadingStatus:o}),[n,o]),l=f("span",t,{state:i,ref:r,props:c,stateAttributesMapping:g});return d.jsx(x.Provider,{value:u,children:l})}),k=a.forwardRef(function(t,r){const{className:v,render:p,delay:s=0,style:c,...n}=t,{imageLoadingStatus:o}=z(),[i,u]=a.useState(s===0),l=A();return a.useEffect(()=>(s>0?l.start(s,()=>u(!0)):u(!0),l.clear),[l,s]),f("span",t,{state:{imageLoadingStatus:o},ref:r,props:n,stateAttributesMapping:g,enabled:o!=="loaded"&&(s===0||i)})});function h({className:e,size:t="default",...r}){return d.jsx(R,{"data-slot":"avatar","data-size":t,className:m("group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten",e),...r})}function w({className:e,...t}){return d.jsx(k,{"data-slot":"avatar-fallback",className:m("flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs",e),...t})}export{h as A,w as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as a,f as n,n as o}from"./index-
|
|
1
|
+
import{m as a,f as n,n as o}from"./index-DMCyFEmS.js";import{u as d}from"./useRender-Ck8DP-Z3.js";const s=o("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function v({className:r,variant:e="default",render:t,...i}){return d({defaultTagName:"span",props:a({className:n(s({variant:e}),r)},i),render:t,state:{slot:"badge",variant:e}})}export{v as B};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as s,f as t}from"./index-
|
|
1
|
+
import{j as s,f as t}from"./index-DMCyFEmS.js";function c({className:a,size:d="default",...r}){return s.jsx("div",{"data-slot":"card","data-size":d,className:t("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",a),...r})}export{c as C};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as zn,at as Z,k as Pe,au as mt,aB as oe,aU as bt,r as l,aG as Jn,a4 as ke,e as q,l as Ze,d as N,h as zt,i as Ae,a5 as Qn,j as I,a6 as Jt,E as ve,aV as Zn,a7 as Pt,g as et,ax as ot,aw as er,aW as tr,aX as Qt,aY as nr,aC as rr,B as Zt,f as Fe}from"./index-
|
|
1
|
+
import{c as zn,at as Z,k as Pe,au as mt,aB as oe,aU as bt,r as l,aG as Jn,a4 as ke,e as q,l as Ze,d as N,h as zt,i as Ae,a5 as Qn,j as I,a6 as Jt,E as ve,aV as Zn,a7 as Pt,g as et,ax as ot,aw as er,aW as tr,aX as Qt,aY as nr,aC as rr,B as Zt,f as Fe}from"./index-DMCyFEmS.js";import{a as A,o as U,m as ge,c as Se,B as or,u as en,s as tn,y as yt,b as nn,w as rn,g as Ee,t as on,q as sn,n as sr,p as ir,i as ar}from"./label-CL3Ivlhy.js";/**
|
|
2
2
|
* @license lucide-react v1.39.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as zn,r as u,i as Fe,E as tt,ar as qt,k as se,as as $e,g as Pe,at as ke,au as We,av as on,aw as lt,ax as Et,ay as Vo,az as Un,aA as Wo,aB as rn,aC as Kn,aD as Dt,aE as Gn,aF as En,l as Ct,a6 as Yn,d as de,a4 as Xn,e as pe,aG as qn,h as ze,a8 as jo,a5 as Qn,m as it,a7 as $o,j as Q,aH as zo,f as ut}from"./index-
|
|
1
|
+
import{c as zn,r as u,i as Fe,E as tt,ar as qt,k as se,as as $e,g as Pe,at as ke,au as We,av as on,aw as lt,ax as Et,ay as Vo,az as Un,aA as Wo,aB as rn,aC as Kn,aD as Dt,aE as Gn,aF as En,l as Ct,a6 as Yn,d as de,a4 as Xn,e as pe,aG as qn,h as ze,a8 as jo,a5 as Qn,m as it,a7 as $o,j as Q,aH as zo,f as ut}from"./index-DMCyFEmS.js";import{C as Uo}from"./check-BKP4SJjJ.js";import{i as Je,Q as Qt,w as _e,S as Jn,U as Zn,V as Ko,W as ft,Y as Tt,Z as eo,_ as to,a as Te,$ as Go,a0 as Mt,a1 as Yo,a2 as Xo,T as Jt,a3 as Lt,a4 as qo,a5 as Zt,v as Re,a6 as Qo,a7 as Jo,a8 as Zo,a9 as Cn,aa as Ut,ab as Tn,ac as Ne,ad as mt,ae as er,af as Nt,ag as Ht,ah as no,ai as sn,aj as tr,ak as nr,al as or,am as rr,C as sr,O as ir,A as oo,an as cr,B as ar,ao as lr,ap as ur,aq as fr,ar as dr,as as pr,z as gr,at as mr,au as hr,av as xr,N as yr,R as vr,p as Rr,aw as ro,j as br,P as wr,l as Er,ax as so,m as Cr,n as Tr,ay as Mr,az as Or,aA as Sr,q as Pr,aB as Ir,F as Ar,r as kr,o as Fr,aC as Dr,aD as Lr,aE as Nr,aF as Hr,aG as Br,aH as _r,s as Vr,t as Wr,aI as Mn,aJ as On,aK as jr}from"./dialog-lgIL_ZCX.js";import{t as cn,g as nt,c as ie,m as ct,o as Se,a as le,p as at,q as io,b as be,r as en,s as Ot,v as an,u as Bt,w as $r,x as st,k as zr,y as Sn,i as Ur,z as Kr}from"./label-CL3Ivlhy.js";import{u as co,a as ao,C as Gr,b as Yr}from"./CompositeItem-DpSaUtYZ.js";import{u as Xr}from"./useValueChanged-Dh5Yg1r8.js";/**
|
|
2
2
|
* @license lucide-react v1.39.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|