@airnauts/comments-client 0.1.1 → 0.4.0

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.
Files changed (46) hide show
  1. package/dist/app/app.d.ts.map +1 -1
  2. package/dist/app/widget-css.generated.d.ts +1 -1
  3. package/dist/app/widget-css.generated.d.ts.map +1 -1
  4. package/dist/config.d.ts +4 -0
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/drafts/DraftsProvider.d.ts +13 -0
  7. package/dist/drafts/DraftsProvider.d.ts.map +1 -0
  8. package/dist/drafts/state.d.ts +21 -0
  9. package/dist/drafts/state.d.ts.map +1 -0
  10. package/dist/identity/IdentityModal.d.ts.map +1 -1
  11. package/dist/index.d.ts +7 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +4654 -4249
  14. package/dist/index.js.map +1 -1
  15. package/dist/marker/MarkerLayer.d.ts.map +1 -1
  16. package/dist/panel/PanelDrawer.d.ts +6 -1
  17. package/dist/panel/PanelDrawer.d.ts.map +1 -1
  18. package/dist/panel/PanelRow.d.ts +3 -1
  19. package/dist/panel/PanelRow.d.ts.map +1 -1
  20. package/dist/panel/controller.d.ts +2 -0
  21. package/dist/panel/controller.d.ts.map +1 -1
  22. package/dist/panel/navigate.d.ts +6 -1
  23. package/dist/panel/navigate.d.ts.map +1 -1
  24. package/dist/panel/state.d.ts +8 -0
  25. package/dist/panel/state.d.ts.map +1 -1
  26. package/dist/threads/controller.d.ts +5 -1
  27. package/dist/threads/controller.d.ts.map +1 -1
  28. package/dist/threads/state.d.ts.map +1 -1
  29. package/dist/threads/useThreads.d.ts +10 -0
  30. package/dist/threads/useThreads.d.ts.map +1 -1
  31. package/dist/ui/Button.d.ts +16 -0
  32. package/dist/ui/Button.d.ts.map +1 -0
  33. package/dist/ui/CommentList.d.ts +6 -1
  34. package/dist/ui/CommentList.d.ts.map +1 -1
  35. package/dist/ui/Composer.d.ts +11 -2
  36. package/dist/ui/Composer.d.ts.map +1 -1
  37. package/dist/ui/DetachedThread.d.ts.map +1 -1
  38. package/dist/ui/Launcher.d.ts.map +1 -1
  39. package/dist/ui/LoginLauncher.d.ts +8 -0
  40. package/dist/ui/LoginLauncher.d.ts.map +1 -0
  41. package/dist/ui/ThreadConversation.d.ts +17 -0
  42. package/dist/ui/ThreadConversation.d.ts.map +1 -0
  43. package/dist/ui/ThreadPopover.d.ts.map +1 -1
  44. package/package.json +4 -4
  45. package/dist/ui/ThreadCard.d.ts +0 -11
  46. package/dist/ui/ThreadCard.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerLayer.d.ts","sourceRoot":"","sources":["../../src/marker/MarkerLayer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAKvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAI9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAmBnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,SAAS,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,KAAK,IAAI,CAAA;IAC9D,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CACzC,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,OAAO,EAGP,QAAQ,EACR,cAAc,EACd,UAAU,EACV,cAAc,GACf,EAAE,gBAAgB,2CA6NlB"}
1
+ {"version":3,"file":"MarkerLayer.d.ts","sourceRoot":"","sources":["../../src/marker/MarkerLayer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAKvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAI9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAmBnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,SAAS,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,KAAK,IAAI,CAAA;IAC9D,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CACzC,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,OAAO,EAGP,QAAQ,EACR,cAAc,EACd,UAAU,EACV,cAAc,GACf,EAAE,gBAAgB,2CA2OlB"}
@@ -1,5 +1,10 @@
1
+ import type { ApiClient } from '../api/client';
2
+ import type { Identity } from '../identity/storage';
1
3
  export type PanelDrawerProps = {
2
4
  resolvePageKey: (url: string) => string;
5
+ client: Pick<ApiClient, 'getThread' | 'addComment' | 'setThreadStatus' | 'upload'>;
6
+ identity: Identity | null;
7
+ onNeedIdentity: (resume: (who: Identity) => void) => void;
3
8
  };
4
- export declare function PanelDrawer({ resolvePageKey }: PanelDrawerProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare function PanelDrawer({ resolvePageKey, client, identity, onNeedIdentity, }: PanelDrawerProps): import("react/jsx-runtime").JSX.Element;
5
10
  //# sourceMappingURL=PanelDrawer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PanelDrawer.d.ts","sourceRoot":"","sources":["../../src/panel/PanelDrawer.tsx"],"names":[],"mappings":"AAiBA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CACxC,CAAA;AAED,wBAAgB,WAAW,CAAC,EAAE,cAAc,EAAE,EAAE,gBAAgB,2CAwI/D"}
1
+ {"version":3,"file":"PanelDrawer.d.ts","sourceRoot":"","sources":["../../src/panel/PanelDrawer.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAG9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAgBnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;IACvC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,YAAY,GAAG,iBAAiB,GAAG,QAAQ,CAAC,CAAA;IAClF,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,KAAK,IAAI,CAAA;CAC1D,CAAA;AAwCD,wBAAgB,WAAW,CAAC,EAC1B,cAAc,EACd,MAAM,EACN,QAAQ,EACR,cAAc,GACf,EAAE,gBAAgB,2CAyMlB"}
@@ -2,6 +2,8 @@ import type { ThreadListItem } from '@airnauts/comments-core';
2
2
  export type PanelRowProps = {
3
3
  item: ThreadListItem;
4
4
  onSelect: () => void;
5
+ onReply: () => void;
6
+ onResolve: () => void;
5
7
  };
6
- export declare function PanelRow({ item, onSelect }: PanelRowProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare function PanelRow({ item, onSelect, onReply, onResolve }: PanelRowProps): import("react/jsx-runtime").JSX.Element;
7
9
  //# sourceMappingURL=PanelRow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PanelRow.d.ts","sourceRoot":"","sources":["../../src/panel/PanelRow.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAI7D,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,IAAI,CAAA;CAAE,CAAA;AAE1E,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAsCzD"}
1
+ {"version":3,"file":"PanelRow.d.ts","sourceRoot":"","sources":["../../src/panel/PanelRow.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAM7D,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,cAAc,CAAA;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB,CAAA;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,aAAa,2CAiF7E"}
@@ -6,6 +6,8 @@ export type PanelController = {
6
6
  setFilter(filter: PanelFilter): Promise<void>;
7
7
  loadMore(): Promise<void>;
8
8
  refresh(): Promise<void>;
9
+ openDetail(id: string): void;
10
+ back(): void;
9
11
  };
10
12
  export declare function createPanelController(dispatch: (a: Action) => void, deps: {
11
13
  client: Pick<ApiClient, 'listThreads'>;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/panel/controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAE9D,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,UAAU,IAAI,IAAI,CAAA;IAClB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB,CAAA;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,EAC7B,IAAI,EAAE;IAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,UAAU,CAAA;CAAE,GAC3E,eAAe,CAoDjB"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/panel/controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAE9D,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,UAAU,IAAI,IAAI,CAAA;IAClB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,IAAI,IAAI,IAAI,CAAA;CACb,CAAA;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,EAC7B,IAAI,EAAE;IAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,UAAU,CAAA;CAAE,GAC3E,eAAe,CA0DjB"}
@@ -1,6 +1,10 @@
1
1
  export declare const FOCUS_STORAGE_KEY = "cmnt:focus";
2
+ export type FocusHandoff = {
3
+ id: string;
4
+ openDetail: boolean;
5
+ };
2
6
  /** Read the cross-page focus target and clear it so it fires exactly once on the destination page. */
3
- export declare function takeFocusHandoff(storage?: Storage): string | null;
7
+ export declare function takeFocusHandoff(storage?: Storage): FocusHandoff | null;
4
8
  export type NavigateDeps = {
5
9
  storage?: Storage;
6
10
  assign?: (url: string) => void;
@@ -9,5 +13,6 @@ export type NavigateDeps = {
9
13
  export declare function goToThread(row: {
10
14
  id: string;
11
15
  pageUrl: string;
16
+ openDetail?: boolean;
12
17
  }, deps?: NavigateDeps): void;
13
18
  //# sourceMappingURL=navigate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../src/panel/navigate.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,iBAAiB,eAAe,CAAA;AAE7C,sGAAsG;AACtG,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,OAAwB,GAAG,MAAM,GAAG,IAAI,CAQjF;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,CAAA;AAEhF,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,GAAG,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,GAAE,YAAiB,GAAG,IAAI,CAa9F"}
1
+ {"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../src/panel/navigate.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,iBAAiB,eAAe,CAAA;AAE7C,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAA;AAE9D,sGAAsG;AACtG,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,OAAwB,GAAG,YAAY,GAAG,IAAI,CAgBvF;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,CAAA;AAEhF,6FAA6F;AAC7F,wBAAgB,UAAU,CACxB,GAAG,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,EAC1D,IAAI,GAAE,YAAiB,GACtB,IAAI,CAgBN"}
@@ -1,7 +1,10 @@
1
1
  import type { ThreadListItem } from '@airnauts/comments-core';
2
2
  export type PanelFilter = 'open' | 'resolved' | 'all';
3
+ export type PanelView = 'list' | 'detail';
3
4
  export type PanelState = {
4
5
  open: boolean;
6
+ view: PanelView;
7
+ detailThreadId: string | null;
5
8
  filter: PanelFilter;
6
9
  list: ThreadListItem[];
7
10
  nextCursor: string | null;
@@ -15,6 +18,11 @@ export type Action = {
15
18
  type: 'OPEN';
16
19
  } | {
17
20
  type: 'CLOSE';
21
+ } | {
22
+ type: 'OPEN_DETAIL';
23
+ id: string;
24
+ } | {
25
+ type: 'BACK';
18
26
  } | {
19
27
  type: 'SET_FILTER';
20
28
  filter: PanelFilter;
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/panel/state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAE7D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;AAErD,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,WAAW,CAAA;IACnB,IAAI,EAAE,cAAc,EAAE,CAAA;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,OAAO,CAAA;IACd,WAAW,EAAE,cAAc,EAAE,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,UAS1B,CAAA;AAED,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IACE,IAAI,EAAE,cAAc,CAAA;IACpB,IAAI,EAAE,cAAc,EAAE,CAAA;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,WAAW,EAAE,cAAc,EAAE,CAAA;CAC9B,GACD;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,cAAc,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAChF;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAA;AAE/B,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAmCrE;AAED,oFAAoF;AACpF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,EAAE,CAI3E"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/panel/state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAE7D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;AAErD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEzC,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,SAAS,CAAA;IACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,MAAM,EAAE,WAAW,CAAA;IACnB,IAAI,EAAE,cAAc,EAAE,CAAA;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,OAAO,CAAA;IACd,WAAW,EAAE,cAAc,EAAE,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,UAW1B,CAAA;AAED,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IACE,IAAI,EAAE,cAAc,CAAA;IACpB,IAAI,EAAE,cAAc,EAAE,CAAA;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,WAAW,EAAE,cAAc,EAAE,CAAA;CAC9B,GACD;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,cAAc,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAChF;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAA;AAE/B,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAuCrE;AAED,oFAAoF;AACpF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,EAAE,CAI3E"}
@@ -20,8 +20,12 @@ export type Controller = {
20
20
  * mutation, clobbering the optimistic update (the pin would revert until a full reload).
21
21
  */
22
22
  registerRuntime(patch: ((id: string, status: ThreadStatus) => void) | null): void;
23
- /** Focus a pin: open + lazy-fetch like openThread, but also arm the focus effect (scroll + pulse). */
23
+ /** Focus a pin: arm the focus effect (scroll + pulse) and lazy-fetch its detail — WITHOUT opening
24
+ * its popover. The sidebar detail is the surface that shows the thread; the popover opens only on a
25
+ * direct pin click. */
24
26
  requestFocus(id: string): void;
27
+ /** Re-fetch a thread's detail by id without opening its popover (the sidebar detail's retry path). */
28
+ refetch(id: string): void;
25
29
  /** The panel registers here to refetch its list when a status change persists (drawer-open reconciliation). */
26
30
  registerStatusListener(fn: ((id: string, status: ThreadStatus) => void) | null): void;
27
31
  };
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/threads/controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAErC,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,KAAK,IAAI,IAAI,CAAA;IACb,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IACrC,uGAAuG;IACvG,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7D;;;;;OAKG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IACnD;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;IACjF,sGAAsG;IACtG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,+GAA+G;IAC/G,sBAAsB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;CACtF,CAAA;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,EAC7B,IAAI,EAAE;IACJ,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,iBAAiB,CAAC,CAAA;IACxD,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;IACjC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;CACnC,GACA,UAAU,CAyDZ"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/threads/controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAErC,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,KAAK,IAAI,IAAI,CAAA;IACb,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IACrC,uGAAuG;IACvG,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7D;;;;;OAKG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IACnD;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;IACjF;;2BAEuB;IACvB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,sGAAsG;IACtG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,+GAA+G;IAC/G,sBAAsB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;CACtF,CAAA;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,EAC7B,IAAI,EAAE;IACJ,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,iBAAiB,CAAC,CAAA;IACxD,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;IACjC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;CACnC,GACA,UAAU,CA4DZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/threads/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/threads/state.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,16 @@ export declare function useOpenThread(): {
12
12
  loading: boolean;
13
13
  error: boolean;
14
14
  };
15
+ /**
16
+ * Detail for a specific thread id, read from the per-id cache. Unlike {@link useOpenThread} this is
17
+ * NOT tied to `openId`, so a surface (the sidebar detail) keeps showing its thread even when the pin
18
+ * popover nulls `openId` on an outside interaction. The popover open-state still uses `openId`.
19
+ */
20
+ export declare function useThreadDetail(id: string | null): {
21
+ detail: Thread | null;
22
+ loading: boolean;
23
+ error: boolean;
24
+ };
15
25
  export declare function useFocus(): {
16
26
  pendingFocusId: string | null;
17
27
  focusedId: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"useThreads.d.ts","sourceRoot":"","sources":["../../src/threads/useThreads.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,SAAS,CAAA;AAS9D,wBAAgB,eAAe,mCAE9B;AAED,wBAAgB,aAAa,sCAE5B;AAED,+IAA+I;AAC/I,wBAAgB,WAAW,0CAE1B;AAED,wBAAgB,oBAAoB,IAAI,YAAY,EAAE,CAErD;AAED,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED,wBAAgB,aAAa,IAAI;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;CACf,CASA;AAED,wBAAgB,QAAQ,IAAI;IAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAGtF"}
1
+ {"version":3,"file":"useThreads.d.ts","sourceRoot":"","sources":["../../src/threads/useThreads.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,SAAS,CAAA;AAS9D,wBAAgB,eAAe,mCAE9B;AAED,wBAAgB,aAAa,sCAE5B;AAED,+IAA+I;AAC/I,wBAAgB,WAAW,0CAE1B;AAED,wBAAgB,oBAAoB,IAAI,YAAY,EAAE,CAErD;AAED,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED,wBAAgB,aAAa,IAAI;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;CACf,CASA;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG;IAClD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;CACf,CAOA;AAED,wBAAgB,QAAQ,IAAI;IAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAGtF"}
@@ -0,0 +1,16 @@
1
+ import { type ComponentPropsWithoutRef } from 'react';
2
+ export type ButtonVariant = 'primary' | 'outline' | 'ghost' | 'link';
3
+ export type ButtonSize = 'sm' | 'md' | 'icon' | 'inline';
4
+ export type ButtonProps = ComponentPropsWithoutRef<'button'> & {
5
+ variant: ButtonVariant;
6
+ size: ButtonSize;
7
+ };
8
+ /** The widget's single button primitive. `variant` sets colour/border identity,
9
+ * `size` sets padding/text/radius; pass `className` for stateful or positional
10
+ * overrides (it is merged last and wins on conflicts). The `link` variant +
11
+ * `inline` size make a padding-less text affordance (colour/weight via `className`). */
12
+ export declare const Button: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & {
13
+ variant: ButtonVariant;
14
+ size: ButtonSize;
15
+ } & import("react").RefAttributes<HTMLButtonElement>>;
16
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/ui/Button.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,wBAAwB,EAAc,MAAM,OAAO,CAAA;AAGjE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;AACpE,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAA;AAExD,MAAM,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,CAAC,GAAG;IAC7D,OAAO,EAAE,aAAa,CAAA;IACtB,IAAI,EAAE,UAAU,CAAA;CACjB,CAAA;AAmBD;;;yFAGyF;AACzF,eAAO,MAAM,MAAM;aAzBR,aAAa;UAChB,UAAU;qDAoChB,CAAA"}
@@ -4,6 +4,11 @@ export type CommentListProps = {
4
4
  loading: boolean;
5
5
  error: boolean;
6
6
  onRetry?: () => void;
7
+ /**
8
+ * popover: cap the list at a fixed height so the floating pin popover stays compact.
9
+ * sidebar: flex to fill the drawer's remaining height (scrolls within that space).
10
+ */
11
+ variant?: 'popover' | 'sidebar';
7
12
  };
8
- export declare function CommentList({ comments, loading, error, onRetry }: CommentListProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function CommentList({ comments, loading, error, onRetry, variant, }: CommentListProps): import("react/jsx-runtime").JSX.Element;
9
14
  //# sourceMappingURL=CommentList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommentList.d.ts","sourceRoot":"","sources":["../../src/ui/CommentList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAItD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAKD,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,gBAAgB,2CAoGlF"}
1
+ {"version":3,"file":"CommentList.d.ts","sourceRoot":"","sources":["../../src/ui/CommentList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAMtD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CAChC,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,OAAO,EACP,KAAK,EACL,OAAO,EACP,OAAmB,GACpB,EAAE,gBAAgB,2CA8HlB"}
@@ -13,8 +13,17 @@ export type ComposerProps = {
13
13
  upload: (file: File) => Promise<Attachment>;
14
14
  /** When set, renders a Cancel button left of Send (used by the new-comment draft). */
15
15
  onCancel?: () => void;
16
- /** Focus the text input on mount. */
16
+ /** Focus the text input on mount (deferred a frame to win against Radix focus scopes).
17
+ * Defaults to true — every composer placement (popover reply, sidebar reply, new-thread
18
+ * draft) grabs the input so the user can type immediately. */
17
19
  autoFocus?: boolean;
20
+ /** Controlled text. When provided, the parent owns the draft text (shared-draft sync). */
21
+ value?: string;
22
+ onValueChange?: (text: string) => void;
23
+ /** Controlled stored attachment (after upload). When `onAttachmentChange` is provided,
24
+ * a completed upload is lifted to the parent and rendered from `attachment.url`. */
25
+ attachment?: Attachment | null;
26
+ onAttachmentChange?: (attachment: Attachment | null) => void;
18
27
  };
19
- export declare function Composer({ mode, identity, onNeedIdentity, onSubmit, upload, onCancel, autoFocus, }: ComposerProps): import("react/jsx-runtime").JSX.Element;
28
+ export declare function Composer({ mode, identity, onNeedIdentity, onSubmit, upload, onCancel, autoFocus, value, onValueChange, attachment, onAttachmentChange, }: ComposerProps): import("react/jsx-runtime").JSX.Element;
20
29
  //# sourceMappingURL=Composer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../src/ui/Composer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAInD,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAA;CAAE,CAAA;AAErF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,GAAG,OAAO,CAAA;IAC3B,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,KAAK,IAAI,CAAA;IACzD,QAAQ,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IAC3C,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAID,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAS,GACV,EAAE,aAAa,2CAkJf"}
1
+ {"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../src/ui/Composer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAKnD,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAA;CAAE,CAAA;AAErF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,GAAG,OAAO,CAAA;IAC3B,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,KAAK,IAAI,CAAA;IACzD,QAAQ,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IAC3C,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB;;mEAE+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC;yFACqF;IACrF,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAC9B,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAA;CAC7D,CAAA;AAID,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAgB,EAChB,KAAK,EACL,aAAa,EACb,UAAU,EACV,kBAAkB,GACnB,EAAE,aAAa,2CA8Kf"}
@@ -1 +1 @@
1
- {"version":3,"file":"DetachedThread.d.ts","sourceRoot":"","sources":["../../src/ui/DetachedThread.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAInD,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,YAAY,GAAG,iBAAiB,GAAG,QAAQ,CAAC,CAAA;IAClF,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,KAAK,IAAI,CAAA;CAC1D,CAAA;AAED,sGAAsG;AACtG,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,mBAAmB,kDAuBvF"}
1
+ {"version":3,"file":"DetachedThread.d.ts","sourceRoot":"","sources":["../../src/ui/DetachedThread.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAInD,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,YAAY,GAAG,iBAAiB,GAAG,QAAQ,CAAC,CAAA;IAClF,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,KAAK,IAAI,CAAA;CAC1D,CAAA;AAED,sGAAsG;AACtG,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,mBAAmB,kDAwBvF"}
@@ -1 +1 @@
1
- {"version":3,"file":"Launcher.d.ts","sourceRoot":"","sources":["../../src/ui/Launcher.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,YAAY,EAAE,OAAO,CAAA;IACrB,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAED,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,aAAa,EACb,YAAY,EACZ,cAAc,EACd,SAAS,EACT,aAAa,GACd,EAAE,aAAa,2CAmDf"}
1
+ {"version":3,"file":"Launcher.d.ts","sourceRoot":"","sources":["../../src/ui/Launcher.tsx"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,YAAY,EAAE,OAAO,CAAA;IACrB,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAED,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,aAAa,EACb,YAAY,EACZ,cAAc,EACd,SAAS,EACT,aAAa,GACd,EAAE,aAAa,2CAkDf"}
@@ -0,0 +1,8 @@
1
+ export type LoginLauncherProps = {
2
+ /** Open the login (identity) modal. */
3
+ onLogIn: () => void;
4
+ };
5
+ /** Logged-out entry point: a fixed pill with a single "Log In" button. Rendered at app
6
+ * level because the full Launcher lives inside MarkerLayer, which is unmounted until login. */
7
+ export declare function LoginLauncher({ onLogIn }: LoginLauncherProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=LoginLauncher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginLauncher.d.ts","sourceRoot":"","sources":["../../src/ui/LoginLauncher.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,uCAAuC;IACvC,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAED;gGACgG;AAChG,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,kBAAkB,2CAe5D"}
@@ -0,0 +1,17 @@
1
+ import type { Attachment, Thread, ThreadListItem } from '@airnauts/comments-core';
2
+ import type { ApiClient } from '../api/client';
3
+ import type { Identity } from '../identity/storage';
4
+ export type ThreadConversationProps = {
5
+ item: ThreadListItem | Thread;
6
+ client: Pick<ApiClient, 'getThread' | 'addComment' | 'setThreadStatus' | 'upload'>;
7
+ identity: Identity | null;
8
+ onNeedIdentity: (resume: (who: Identity) => void) => void;
9
+ variant: 'popover' | 'sidebar';
10
+ /** Controlled draft text (shared-draft sync). */
11
+ draftText?: string;
12
+ onDraftTextChange?: (text: string) => void;
13
+ draftAttachment?: Attachment | null;
14
+ onDraftAttachmentChange?: (a: Attachment | null) => void;
15
+ };
16
+ export declare function ThreadConversation({ item, client, identity, onNeedIdentity, variant, draftText, onDraftTextChange, draftAttachment, onDraftAttachmentChange, }: ThreadConversationProps): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=ThreadConversation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadConversation.d.ts","sourceRoot":"","sources":["../../src/ui/ThreadConversation.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EAGV,MAAM,EACN,cAAc,EACf,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAUnD,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAA;IAC7B,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,YAAY,GAAG,iBAAiB,GAAG,QAAQ,CAAC,CAAA;IAClF,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,KAAK,IAAI,CAAA;IACzD,OAAO,EAAE,SAAS,GAAG,SAAS,CAAA;IAC9B,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,eAAe,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IACnC,uBAAuB,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAA;CACzD,CAAA;AAED,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,cAAc,EACd,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,uBAAuB,GACxB,EAAE,uBAAuB,2CA0IzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadPopover.d.ts","sourceRoot":"","sources":["../../src/ui/ThreadPopover.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAG7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAA;AAK/C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,cAAc,CAAA;IACpB,GAAG,EAAE,EAAE,CAAA;IACP,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,YAAY,GAAG,iBAAiB,GAAG,QAAQ,CAAC,CAAA;IAClF,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,KAAK,IAAI,CAAA;IACzD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,GAAG,EACH,MAAM,EACN,QAAQ,EACR,cAAc,EACd,OAAO,GACR,EAAE,kBAAkB,2CAkCpB"}
1
+ {"version":3,"file":"ThreadPopover.d.ts","sourceRoot":"","sources":["../../src/ui/ThreadPopover.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAG7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAG9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAA;AAK/C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,cAAc,CAAA;IACpB,GAAG,EAAE,EAAE,CAAA;IACP,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,YAAY,GAAG,iBAAiB,GAAG,QAAQ,CAAC,CAAA;IAClF,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,KAAK,IAAI,CAAA;IACzD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,GAAG,EACH,MAAM,EACN,QAAQ,EACR,cAAc,EACd,OAAO,GACR,EAAE,kBAAkB,2CAoDpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@airnauts/comments-client",
3
- "version": "0.1.1",
3
+ "version": "0.4.0",
4
4
  "description": "Embeddable commenting widget and React wrapper for the Airnauts commenting tool.",
5
5
  "keywords": [
6
6
  "comments",
@@ -47,7 +47,7 @@
47
47
  "@radix-ui/react-popover": "^1.1.6",
48
48
  "clsx": "^2.1.1",
49
49
  "tailwind-merge": "^2.6.0",
50
- "@airnauts/comments-core": "^0.1.0"
50
+ "@airnauts/comments-core": "^0.4.0"
51
51
  },
52
52
  "peerDependencies": {
53
53
  "react": "^19.0.0",
@@ -74,8 +74,8 @@
74
74
  "tailwindcss": "^4.0.0",
75
75
  "react": "^19.0.0",
76
76
  "react-dom": "^19.0.0",
77
- "@airnauts/comments-server": "0.1.0",
78
- "@airnauts/comments-adapter-memory": "0.1.0"
77
+ "@airnauts/comments-adapter-memory": "0.4.0",
78
+ "@airnauts/comments-server": "0.4.0"
79
79
  },
80
80
  "size-limit": [
81
81
  {
@@ -1,11 +0,0 @@
1
- import type { ThreadListItem } from '@airnauts/comments-core';
2
- import type { ApiClient } from '../api/client';
3
- import type { Identity } from '../identity/storage';
4
- export type ThreadCardProps = {
5
- item: ThreadListItem;
6
- client: Pick<ApiClient, 'getThread' | 'addComment' | 'setThreadStatus' | 'upload'>;
7
- identity: Identity | null;
8
- onNeedIdentity: (resume: (who: Identity) => void) => void;
9
- };
10
- export declare function ThreadCard({ item, client, identity, onNeedIdentity }: ThreadCardProps): import("react/jsx-runtime").JSX.Element;
11
- //# sourceMappingURL=ThreadCard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThreadCard.d.ts","sourceRoot":"","sources":["../../src/ui/ThreadCard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAyB,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AASnD,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,cAAc,CAAA;IACpB,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,YAAY,GAAG,iBAAiB,GAAG,QAAQ,CAAC,CAAA;IAClF,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,KAAK,IAAI,CAAA;CAC1D,CAAA;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,eAAe,2CAkHrF"}