pi-roundtable-web 0.26.0 → 0.26.1

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 (198) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +23 -7
  3. package/dist/chunk-account-ghq105t4.js +1 -0
  4. package/dist/{chunk-action-menu-rm5cyqkj.js → chunk-action-menu-me0g9qsc.js} +1 -1
  5. package/dist/{chunk-agent-b017vswv.js → chunk-agent-rdv7ekrt.js} +1 -1
  6. package/dist/chunk-arranged-rooms-81rqhx9x.js +1 -0
  7. package/dist/chunk-character-creator-bd426yjw.js +1 -0
  8. package/dist/chunk-codeeditor-ajhgd33t.js +2 -0
  9. package/dist/chunk-confirm-p3mts8mx.js +1 -0
  10. package/dist/{chunk-connectors-hrm06nx8.js → chunk-connectors-bkv3xn83.js} +1 -1
  11. package/dist/{chunk-conversations-e26rrf01.js → chunk-conversations-0e0vbxwr.js} +1 -1
  12. package/dist/{chunk-drag-v41gx2mc.js → chunk-drag-peyb8t0k.js} +1 -1
  13. package/dist/{chunk-entry-jxxb3ath.js → chunk-entry-mv7q8br0.js} +1 -1
  14. package/dist/chunk-folder-list-era3tksh.js +1 -0
  15. package/dist/chunk-folds-hvws0bd5.js +1 -0
  16. package/dist/{chunk-gate-8k61stsc.js → chunk-gate-hc7dd0fx.js} +1 -1
  17. package/dist/chunk-group-scene-dkbpmbh5.js +1 -0
  18. package/dist/chunk-group-table-fqmxgdfw.js +1 -0
  19. package/dist/chunk-host-icons-4xde9ntk.js +1 -0
  20. package/dist/chunk-host-picture-014yzk20.js +1 -0
  21. package/dist/chunk-host-state-t56e5sdy.js +1 -0
  22. package/dist/chunk-host-ui-p1zy9nmp.js +1 -0
  23. package/dist/chunk-index-0fmmvgee.js +2 -0
  24. package/dist/chunk-index-0q15ysrb.js +1 -0
  25. package/dist/chunk-index-0xh24y25.js +2 -0
  26. package/dist/chunk-index-2yebd9tb.js +426 -0
  27. package/dist/chunk-index-4t0r3t3b.js +2 -0
  28. package/dist/chunk-index-5yzfrf7b.js +138 -0
  29. package/dist/{chunk-index-2d0kg096.js → chunk-index-6twb7ccd.js} +2 -2
  30. package/dist/chunk-index-73gh7kgr.js +920 -0
  31. package/dist/chunk-index-7xffskfa.js +8 -0
  32. package/dist/chunk-index-aqw7cy5j.js +1 -0
  33. package/dist/{chunk-index-d1prgfbp.js → chunk-index-b6ca02e8.js} +2 -2
  34. package/dist/chunk-index-b8nvhcx5.js +2 -0
  35. package/dist/{chunk-index-014rjv9k.js → chunk-index-cvbdf2ca.js} +2 -2
  36. package/dist/chunk-index-czdketze.js +2 -0
  37. package/dist/{chunk-index-y8rnq8zf.js → chunk-index-dt9775ka.js} +3 -3
  38. package/dist/chunk-index-eg55mqqe.js +1 -0
  39. package/dist/{chunk-index-xgkd15n3.js → chunk-index-gr6e0hse.js} +1 -1
  40. package/dist/chunk-index-gyary7np.js +13 -0
  41. package/dist/chunk-index-j214tczc.js +1 -0
  42. package/dist/chunk-index-jd6632ef.js +2 -0
  43. package/dist/chunk-index-jw7dtshr.js +2 -0
  44. package/dist/{chunk-index-wnjp6wv0.js → chunk-index-k7t14rwa.js} +2 -2
  45. package/dist/{chunk-index-c07p8k0x.js → chunk-index-kwcx62wb.js} +3 -3
  46. package/dist/{chunk-index-hby0ap91.js → chunk-index-m7fvw92f.js} +2 -2
  47. package/dist/chunk-index-mmg788a1.js +2 -0
  48. package/dist/chunk-index-mq0dacwr.js +2 -0
  49. package/dist/chunk-index-p53ak25v.js +2 -0
  50. package/dist/{chunk-index-rhtvcbsq.js → chunk-index-pk1yxkv4.js} +2 -2
  51. package/dist/{chunk-index-2stynxw6.css → chunk-index-rbcz9jd4.css} +1 -1
  52. package/dist/{chunk-index-km40bhsz.js → chunk-index-rmxbdmn2.js} +2 -2
  53. package/dist/chunk-index-rnxj3z8k.js +2 -0
  54. package/dist/{chunk-index-hssjbr1k.js → chunk-index-snzzfhk3.js} +2 -2
  55. package/dist/chunk-index-v3bmr0nw.js +2 -0
  56. package/dist/{chunk-index-awx6nnta.js → chunk-index-vcyzwtk2.js} +1 -1
  57. package/dist/{chunk-index-nqfkwkfp.js → chunk-index-w2j3njb6.js} +2 -2
  58. package/dist/{chunk-index-e5sd30xy.js → chunk-index-w31c4yjv.js} +2 -2
  59. package/dist/chunk-index-wrm8w165.js +2 -0
  60. package/dist/chunk-index-xh0mg9cw.js +2 -0
  61. package/dist/chunk-index-ybtvvx85.js +2 -0
  62. package/dist/{chunk-index-dhpt8qr9.js → chunk-index-yzsgsvnp.js} +2 -2
  63. package/dist/{chunk-index-66nskrdj.js → chunk-index-z9x4cnzf.js} +2 -2
  64. package/dist/chunk-index-zrvg23jd.js +2 -0
  65. package/dist/chunk-index-zynq0b0w.js +50 -0
  66. package/dist/chunk-lang-css-88v3hp3d.js +1 -0
  67. package/dist/{chunk-lang-dockerfile-hrav55t7.js → chunk-lang-dockerfile-k728ewsf.js} +1 -1
  68. package/dist/{chunk-lang-go-x9ahv6e5.js → chunk-lang-go-wjwgay4v.js} +2 -2
  69. package/dist/chunk-lang-html-07d47es4.js +1 -0
  70. package/dist/chunk-lang-javascript-fmhhgzwd.js +1 -0
  71. package/dist/{chunk-lang-json-hsemyd0r.js → chunk-lang-json-7gd89mvs.js} +1 -1
  72. package/dist/{chunk-lang-markdown-zkwb4c9n.js → chunk-lang-markdown-b6qbe8bt.js} +5 -5
  73. package/dist/{chunk-lang-python-tewx7006.js → chunk-lang-python-3v56y31b.js} +2 -2
  74. package/dist/{chunk-lang-rust-0ydx84s1.js → chunk-lang-rust-kh0z74d1.js} +1 -1
  75. package/dist/{chunk-lang-shell-gq1tmdz4.js → chunk-lang-shell-9zv0zvbx.js} +1 -1
  76. package/dist/{chunk-lang-sql-xt1qyycg.js → chunk-lang-sql-yw6bf3t7.js} +2 -2
  77. package/dist/{chunk-lang-toml-0hamc5fc.js → chunk-lang-toml-tg1r96nq.js} +1 -1
  78. package/dist/chunk-lang-typescript-etjjvr2g.js +1 -0
  79. package/dist/{chunk-lang-xml-wf6h5pt2.js → chunk-lang-xml-ev1mndd4.js} +1 -1
  80. package/dist/{chunk-lang-yaml-7vk521h1.js → chunk-lang-yaml-fz5qpb3r.js} +1 -1
  81. package/dist/chunk-layout-actions-48ecgtkg.js +1 -0
  82. package/dist/{chunk-menu-items-1n9qargb.js → chunk-menu-items-1epy3h0t.js} +2 -2
  83. package/dist/chunk-mode-toggle-fxmfxsa4.js +1 -0
  84. package/dist/chunk-note-row-kd0fy7ee.js +75 -0
  85. package/dist/{chunk-notes-t15bh04m.js → chunk-notes-yb8f057c.js} +1 -1
  86. package/dist/chunk-notice-bell-wr4f1rph.js +1 -0
  87. package/dist/chunk-notices-x07da5bb.js +1 -0
  88. package/dist/chunk-onboarding-csrkbh9z.js +1 -0
  89. package/dist/{chunk-overview-km5vq375.js → chunk-overview-avc2d30t.js} +1 -1
  90. package/dist/{chunk-palette-a8txdgd0.js → chunk-palette-9nhp95bz.js} +1 -1
  91. package/dist/chunk-placement-items-q694dpgk.js +1 -0
  92. package/dist/chunk-profile-6qemf3m7.js +1 -0
  93. package/dist/{chunk-prompt-history-wm9dsy6s.js → chunk-prompt-history-7enzp2p3.js} +1 -1
  94. package/dist/chunk-prompts-nv6mrn0q.js +1 -0
  95. package/dist/chunk-room-confirms-zz7n61y7.js +1 -0
  96. package/dist/{chunk-room-menu-2tm2xtfx.js → chunk-room-menu-rr6nzap1.js} +1 -1
  97. package/dist/{chunk-rooms-menu-button-wxnsxjwc.js → chunk-rooms-menu-button-zbtwj47d.js} +1 -1
  98. package/dist/chunk-schedules-rw57nr0m.js +1 -0
  99. package/dist/{chunk-seat-menu-d3npdtx1.js → chunk-seat-menu-ys5v9abz.js} +1 -1
  100. package/dist/chunk-sheet-hosts-jhvaacst.js +1 -0
  101. package/dist/chunk-skill-editor-sz8an8qr.js +8 -0
  102. package/dist/{chunk-skills-shkdwes8.js → chunk-skills-tnr1h16h.js} +1 -1
  103. package/dist/chunk-switcher-list-17enhrse.js +1 -0
  104. package/dist/chunk-tab-dot-r6brdbmw.js +1 -0
  105. package/dist/chunk-table-r12cja6p.js +1 -0
  106. package/dist/chunk-table-seats-g3t392zz.js +1 -0
  107. package/dist/{chunk-table2d-n26b7gd0.js → chunk-table2d-p3ezsdcj.js} +1 -1
  108. package/dist/{chunk-table3d-8aysyf56.js → chunk-table3d-4x2n2b00.js} +20 -20
  109. package/dist/chunk-thread-actions-qc6ezkha.js +1 -0
  110. package/dist/chunk-transcript-n2s6dher.js +1 -0
  111. package/dist/chunk-where-f3scdydc.js +1 -0
  112. package/dist/chunk-workspace-xs023bxm.js +1 -0
  113. package/dist/chunk-zh-tw-efvmk3fd.js +1 -0
  114. package/dist/index.html +1 -1
  115. package/dist/sw.js +1 -1
  116. package/package.json +2 -2
  117. package/src/api-types.ts +58 -3
  118. package/src/app/app.ts +5 -0
  119. package/src/app/room-log.ts +16 -4
  120. package/src/app/rooms.ts +39 -0
  121. package/src/app/routes.ts +44 -2
  122. package/src/app/socket.ts +45 -9
  123. package/src/app/threads.ts +31 -2
  124. package/src/auth/authenticator.ts +10 -4
  125. package/src/auth/login-page.ts +4 -2
  126. package/src/auth/oidc-pages.ts +2 -0
  127. package/src/auth/oidc.ts +39 -1
  128. package/src/authz.ts +2 -1
  129. package/src/console-server.ts +32 -6
  130. package/src/host/cards.ts +18 -5
  131. package/src/host/context.ts +72 -25
  132. package/src/host/forms.ts +3 -0
  133. package/src/host/frames.ts +8 -1
  134. package/src/host/host-app.ts +6 -4
  135. package/src/host/host-routes.ts +36 -3
  136. package/src/host/room-views.ts +6 -6
  137. package/src/host/rooms-service.ts +16 -1
  138. package/src/host/views.ts +3 -0
  139. package/src/i18n/zh-tw.ts +9 -2
  140. package/src/index.ts +15 -1
  141. package/src/options.ts +36 -0
  142. package/src/page-presentation.ts +47 -2
  143. package/src/pwa.ts +32 -4
  144. package/src/web-app.ts +47 -3
  145. package/src/web-plugin.ts +20 -9
  146. package/dist/chunk-account-hw49gd0d.js +0 -1
  147. package/dist/chunk-arranged-rooms-q5v3dm1r.js +0 -1
  148. package/dist/chunk-character-creator-5dxcvd16.js +0 -1
  149. package/dist/chunk-codeeditor-pyt09fwg.js +0 -2
  150. package/dist/chunk-confirm-521yqmta.js +0 -1
  151. package/dist/chunk-folder-list-b97xk12b.js +0 -1
  152. package/dist/chunk-folds-b8q7eags.js +0 -1
  153. package/dist/chunk-group-scene-dx6wt19m.js +0 -1
  154. package/dist/chunk-group-table-e4jr8r3a.js +0 -1
  155. package/dist/chunk-host-state-g7e7c0k5.js +0 -1
  156. package/dist/chunk-host-ui-x7k6n07v.js +0 -939
  157. package/dist/chunk-index-2qd81wbx.js +0 -2
  158. package/dist/chunk-index-459drsft.js +0 -2
  159. package/dist/chunk-index-4mfj596y.js +0 -2
  160. package/dist/chunk-index-bbsytycb.js +0 -2
  161. package/dist/chunk-index-cq1e9xdz.js +0 -2
  162. package/dist/chunk-index-g351921r.js +0 -1
  163. package/dist/chunk-index-k2qq1gdj.js +0 -2
  164. package/dist/chunk-index-ke9ynm0n.js +0 -2
  165. package/dist/chunk-index-kpscvg85.js +0 -2
  166. package/dist/chunk-index-m0d100mg.js +0 -2
  167. package/dist/chunk-index-mb72snk9.js +0 -2
  168. package/dist/chunk-index-mjqqver5.js +0 -4
  169. package/dist/chunk-index-nwqk447w.js +0 -2
  170. package/dist/chunk-index-pcfhpm8v.js +0 -302
  171. package/dist/chunk-index-q8h8xzbm.js +0 -2
  172. package/dist/chunk-index-r5vszgfs.js +0 -2
  173. package/dist/chunk-index-rjv7vrwd.js +0 -13
  174. package/dist/chunk-index-v23m38p6.js +0 -50
  175. package/dist/chunk-index-va0g7d88.js +0 -1
  176. package/dist/chunk-index-z3k18atc.js +0 -2
  177. package/dist/chunk-lang-css-6bepqpnx.js +0 -1
  178. package/dist/chunk-lang-html-8jc72zt4.js +0 -1
  179. package/dist/chunk-lang-javascript-2p2qtbnf.js +0 -1
  180. package/dist/chunk-lang-typescript-82xf7z2e.js +0 -1
  181. package/dist/chunk-layout-actions-zh7bezk7.js +0 -1
  182. package/dist/chunk-notice-bell-w3y0h0sr.js +0 -1
  183. package/dist/chunk-notices-fa3g7qze.js +0 -1
  184. package/dist/chunk-onboarding-34v3nr17.js +0 -1
  185. package/dist/chunk-placement-items-wgaxsbvs.js +0 -1
  186. package/dist/chunk-profile-ypxdbsk1.js +0 -1
  187. package/dist/chunk-prompts-7mhhq7zs.js +0 -1
  188. package/dist/chunk-room-confirms-t11a1gsw.js +0 -1
  189. package/dist/chunk-schedules-2ft6xxyw.js +0 -1
  190. package/dist/chunk-sheet-hosts-vngvp7wv.js +0 -1
  191. package/dist/chunk-skill-editor-65n2hsq4.js +0 -8
  192. package/dist/chunk-switcher-list-g6hhmr1t.js +0 -1
  193. package/dist/chunk-table-1b6bsq2y.js +0 -1
  194. package/dist/chunk-table-seats-vy1qhdks.js +0 -1
  195. package/dist/chunk-transcript-355faceq.js +0 -1
  196. package/dist/chunk-where-j5qdt8a4.js +0 -1
  197. package/dist/chunk-workspace-vrbs6zx1.js +0 -1
  198. package/dist/chunk-zh-tw-zeg600bk.js +0 -1
@@ -0,0 +1,920 @@
1
+ import{r,e}from"./chunk-index-zynq0b0w.js";var d=!1;function je(){if(d||typeof document>"u")return;if(d=!0,typeof CSSStyleSheet<"u"&&"adoptedStyleSheets"in Document.prototype)try{let t=new CSSStyleSheet;t.replaceSync(`
2
+ .hpic {
3
+ flex: none;
4
+ display: inline-grid;
5
+ place-items: center;
6
+ overflow: hidden;
7
+ border-radius: var(--radius-full);
8
+ background: var(--surface-3);
9
+ color: #fff;
10
+ font-weight: var(--weight-bold);
11
+ line-height: 1;
12
+ user-select: none;
13
+ }
14
+
15
+ .hpic > img {
16
+ width: 100%;
17
+ height: 100%;
18
+ object-fit: cover;
19
+ }
20
+
21
+ .unread-mark {
22
+ display: inline-flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ min-width: 1.35rem;
26
+ height: 1.35rem;
27
+ padding: 0 0.4rem;
28
+ border-radius: var(--radius-full);
29
+ background: var(--accent);
30
+ color: var(--on-accent);
31
+ font-size: var(--text-xs);
32
+ font-weight: var(--weight-bold);
33
+ font-variant-numeric: tabular-nums;
34
+ }
35
+
36
+ .room-row-top .unread-mark {
37
+ margin-left: auto;
38
+ }
39
+
40
+ .room-row-top .unread-mark + .room-row-time {
41
+ margin-left: 0;
42
+ }
43
+
44
+ .switcher-name .unread-mark {
45
+ margin-left: auto;
46
+ }
47
+
48
+ .plain {
49
+ white-space: pre-wrap;
50
+ overflow-wrap: anywhere;
51
+ }
52
+
53
+ .label-chip {
54
+ padding: 0 var(--space-2);
55
+ border-radius: var(--radius-full);
56
+ background: var(--surface-3);
57
+ color: var(--muted);
58
+ font-size: var(--text-xs);
59
+ font-weight: var(--weight-medium);
60
+ }
61
+
62
+ .message[data-author="assistant"] .bubble {
63
+ border-color: transparent;
64
+ background: var(--accent-soft);
65
+ }
66
+
67
+ .message[data-author="member"]:not([data-mine]) .bubble {
68
+ background: var(--surface-2);
69
+ }
70
+
71
+ .message[data-highlight] .bubble {
72
+ animation: host-highlight 2.4s var(--ease-out) both;
73
+ }
74
+
75
+ @keyframes host-highlight {
76
+ 0%, 60% {
77
+ box-shadow: 0 0 0 3px var(--accent);
78
+ }
79
+ }
80
+
81
+ .message-edited,
82
+ .message-expired {
83
+ margin: var(--space-1) 0 0;
84
+ color: var(--muted);
85
+ font-size: var(--text-xs);
86
+ }
87
+
88
+ .host-notice {
89
+ display: flex;
90
+ align-items: flex-start;
91
+ gap: var(--space-2);
92
+ margin: var(--space-3) auto;
93
+ max-width: min(36rem, 92%);
94
+ padding: var(--space-2) var(--space-3);
95
+ border: 1px dashed var(--border-strong);
96
+ border-radius: var(--radius-lg);
97
+ background: var(--surface-2);
98
+ color: var(--muted);
99
+ font-size: var(--text-sm);
100
+ }
101
+
102
+ .host-notice[data-highlight] {
103
+ animation: host-highlight 2.4s var(--ease-out) both;
104
+ }
105
+
106
+ .host-notice > svg {
107
+ flex: none;
108
+ margin-top: 0.2rem;
109
+ }
110
+
111
+ .host-notice time {
112
+ margin-left: auto;
113
+ padding-left: var(--space-2);
114
+ font-size: var(--text-xs);
115
+ white-space: nowrap;
116
+ }
117
+
118
+ .new-divider {
119
+ display: flex;
120
+ align-items: center;
121
+ gap: var(--space-3);
122
+ margin: var(--space-3) 0 var(--space-1);
123
+ color: var(--accent);
124
+ font-size: var(--text-xs);
125
+ font-weight: var(--weight-bold);
126
+ }
127
+
128
+ .new-divider::before,
129
+ .new-divider::after {
130
+ content: "";
131
+ flex: 1;
132
+ height: 1px;
133
+ background: var(--accent);
134
+ opacity: 0.55;
135
+ }
136
+
137
+ .seen {
138
+ display: flex;
139
+ justify-content: flex-end;
140
+ flex-wrap: wrap;
141
+ gap: var(--space-2);
142
+ padding: 0 var(--space-1);
143
+ color: var(--muted);
144
+ font-size: var(--text-xs);
145
+ }
146
+
147
+ .seen-toggle {
148
+ display: inline-flex;
149
+ align-items: center;
150
+ gap: var(--space-1);
151
+ min-height: 0;
152
+ padding: 0 var(--space-1);
153
+ border: 0;
154
+ background: none;
155
+ color: inherit;
156
+ font: inherit;
157
+ cursor: pointer;
158
+ }
159
+
160
+ .seen-toggle .hpic + .hpic {
161
+ margin-left: -0.35rem;
162
+ box-shadow: 0 0 0 1.5px var(--bg);
163
+ }
164
+
165
+ .seen-names {
166
+ flex-basis: 100%;
167
+ text-align: right;
168
+ }
169
+
170
+ .host-head-fields {
171
+ display: flex;
172
+ flex-wrap: wrap;
173
+ gap: 0 var(--space-4);
174
+ margin: 0;
175
+ padding: var(--space-1) var(--space-4);
176
+ border-bottom: 1px solid var(--border);
177
+ background: var(--surface);
178
+ font-size: var(--text-xs);
179
+ }
180
+
181
+ .host-head-fields > div {
182
+ display: flex;
183
+ gap: var(--space-2);
184
+ min-width: 0;
185
+ }
186
+
187
+ .host-head-fields dt {
188
+ color: var(--muted);
189
+ }
190
+
191
+ .host-head-fields dd {
192
+ margin: 0;
193
+ min-width: 0;
194
+ overflow-wrap: anywhere;
195
+ }
196
+
197
+ .host-banner {
198
+ margin: 0;
199
+ padding: var(--space-1) var(--space-4);
200
+ border-bottom: 1px solid var(--border);
201
+ font-size: var(--text-sm);
202
+ }
203
+
204
+ .host-banner[data-tone="warn"] {
205
+ background: var(--warn-soft);
206
+ }
207
+
208
+ .host-banner[data-tone="risk"] {
209
+ background: var(--danger-soft);
210
+ color: var(--danger);
211
+ }
212
+
213
+ .host-actions {
214
+ display: flex;
215
+ flex-wrap: wrap;
216
+ gap: var(--space-2);
217
+ }
218
+
219
+ .host-actions.bar {
220
+ flex-wrap: nowrap;
221
+ padding: var(--space-2) var(--space-4);
222
+ border-bottom: 1px solid var(--border);
223
+ overflow-x: auto;
224
+ }
225
+
226
+ .host-actions.bar > button {
227
+ flex: none;
228
+ min-height: 2.25rem;
229
+ padding: 0 var(--space-3);
230
+ font-size: var(--text-sm);
231
+ }
232
+
233
+ .host-cards {
234
+ display: flex;
235
+ flex-direction: column;
236
+ border-top: 1px solid var(--border);
237
+ background: var(--surface-2);
238
+ }
239
+
240
+ .host-cards-toggle {
241
+ display: flex;
242
+ align-items: center;
243
+ gap: var(--space-2);
244
+ min-height: 2.5rem;
245
+ padding: 0 var(--space-4);
246
+ border: 0;
247
+ border-radius: 0;
248
+ background: none;
249
+ color: var(--text);
250
+ font: inherit;
251
+ font-size: var(--text-sm);
252
+ text-align: left;
253
+ overflow: hidden;
254
+ }
255
+
256
+ .host-cards-toggle > span {
257
+ min-width: 0;
258
+ overflow: hidden;
259
+ text-overflow: ellipsis;
260
+ white-space: nowrap;
261
+ }
262
+
263
+ .host-cards-toggle > svg {
264
+ flex: none;
265
+ transition: transform var(--dur-fast) var(--ease-out);
266
+ }
267
+
268
+ .host-cards[data-open] .host-cards-toggle > svg {
269
+ transform: rotate(90deg);
270
+ }
271
+
272
+ .host-cards-body {
273
+ display: flex;
274
+ flex-direction: column;
275
+ gap: var(--space-2);
276
+ max-height: min(16rem, 34vh);
277
+ padding: 0 var(--space-4) var(--space-3);
278
+ overflow-y: auto;
279
+ }
280
+
281
+ .host-card {
282
+ display: flex;
283
+ flex-direction: column;
284
+ gap: var(--space-2);
285
+ padding: var(--space-3);
286
+ border: 1px solid var(--border);
287
+ border-left-width: 4px;
288
+ border-radius: var(--radius-lg);
289
+ background: var(--surface);
290
+ }
291
+
292
+ .host-card[data-tone="ok"] {
293
+ border-left-color: var(--success);
294
+ }
295
+
296
+ .host-card[data-tone="warn"] {
297
+ border-left-color: var(--warn);
298
+ }
299
+
300
+ .host-card[data-tone="risk"] {
301
+ border-left-color: var(--danger);
302
+ }
303
+
304
+ .host-card[data-tone="note"] {
305
+ border-left-color: var(--accent);
306
+ }
307
+
308
+ .host-card[data-state="done"],
309
+ .host-card[data-state="superseded"],
310
+ .host-card[data-state="expired"] {
311
+ opacity: 0.7;
312
+ }
313
+
314
+ .host-card header {
315
+ display: flex;
316
+ align-items: center;
317
+ gap: var(--space-2);
318
+ }
319
+
320
+ .host-card h3 {
321
+ flex: 1;
322
+ margin: 0;
323
+ font-size: var(--text-md);
324
+ }
325
+
326
+ .host-card-links {
327
+ display: flex;
328
+ flex-wrap: wrap;
329
+ gap: var(--space-1) var(--space-4);
330
+ font-size: var(--text-sm);
331
+ }
332
+
333
+ .host-cards-older {
334
+ font-size: var(--text-sm);
335
+ color: var(--muted);
336
+ }
337
+
338
+ .host-cards-older > summary {
339
+ cursor: pointer;
340
+ }
341
+
342
+ .section-icon {
343
+ margin-right: var(--space-1);
344
+ vertical-align: -2px;
345
+ }
346
+
347
+ .host-form {
348
+ display: flex;
349
+ flex-direction: column;
350
+ gap: var(--space-3);
351
+ }
352
+
353
+ .host-field {
354
+ display: flex;
355
+ flex-direction: column;
356
+ gap: var(--space-1);
357
+ min-width: 0;
358
+ }
359
+
360
+ .host-field > label,
361
+ .host-field > legend {
362
+ font-size: var(--text-sm);
363
+ font-weight: var(--weight-medium);
364
+ }
365
+
366
+ .host-field .hint {
367
+ color: var(--muted);
368
+ font-size: var(--text-xs);
369
+ }
370
+
371
+ .host-field .field-error {
372
+ color: var(--danger);
373
+ font-size: var(--text-sm);
374
+ }
375
+
376
+ .host-field fieldset {
377
+ display: flex;
378
+ flex-direction: column;
379
+ gap: var(--space-1);
380
+ margin: 0;
381
+ padding: 0;
382
+ border: 0;
383
+ max-height: 14rem;
384
+ overflow-y: auto;
385
+ }
386
+
387
+ .host-field fieldset label {
388
+ display: flex;
389
+ align-items: center;
390
+ gap: var(--space-2);
391
+ min-height: var(--touch);
392
+ }
393
+
394
+ .host-field select[size] {
395
+ min-height: 9rem;
396
+ }
397
+
398
+ .host-list {
399
+ display: flex;
400
+ flex-direction: column;
401
+ gap: var(--space-2);
402
+ margin: 0;
403
+ padding: 0;
404
+ list-style: none;
405
+ }
406
+
407
+ .host-list > li {
408
+ display: flex;
409
+ align-items: center;
410
+ gap: var(--space-3);
411
+ padding: var(--space-3);
412
+ border: 1px solid var(--border);
413
+ border-radius: var(--radius-lg);
414
+ background: var(--surface);
415
+ }
416
+
417
+ .host-list-main {
418
+ display: flex;
419
+ flex: 1;
420
+ flex-direction: column;
421
+ min-width: 0;
422
+ }
423
+
424
+ .host-list-main > a,
425
+ .host-list-main > strong {
426
+ color: var(--text);
427
+ font-weight: var(--weight-medium);
428
+ text-decoration: none;
429
+ overflow-wrap: anywhere;
430
+ }
431
+
432
+ .host-list-main > span {
433
+ color: var(--muted);
434
+ font-size: var(--text-sm);
435
+ }
436
+
437
+ .attention-dot {
438
+ flex: none;
439
+ width: 0.6rem;
440
+ height: 0.6rem;
441
+ border-radius: var(--radius-full);
442
+ background: var(--danger);
443
+ }
444
+
445
+ .kind-filter {
446
+ width: 100%;
447
+ }
448
+
449
+ .kind-row-picture {
450
+ position: relative;
451
+ display: inline-flex;
452
+ }
453
+
454
+ .kind-row-picture .attention-dot {
455
+ position: absolute;
456
+ top: -1px;
457
+ right: -1px;
458
+ box-shadow: 0 0 0 2px var(--surface);
459
+ }
460
+ `),document.adoptedStyleSheets=[...document.adoptedStyleSheets,t];return}catch{}let a=document.createElement("style");a.textContent=`
461
+ .hpic {
462
+ flex: none;
463
+ display: inline-grid;
464
+ place-items: center;
465
+ overflow: hidden;
466
+ border-radius: var(--radius-full);
467
+ background: var(--surface-3);
468
+ color: #fff;
469
+ font-weight: var(--weight-bold);
470
+ line-height: 1;
471
+ user-select: none;
472
+ }
473
+
474
+ .hpic > img {
475
+ width: 100%;
476
+ height: 100%;
477
+ object-fit: cover;
478
+ }
479
+
480
+ .unread-mark {
481
+ display: inline-flex;
482
+ align-items: center;
483
+ justify-content: center;
484
+ min-width: 1.35rem;
485
+ height: 1.35rem;
486
+ padding: 0 0.4rem;
487
+ border-radius: var(--radius-full);
488
+ background: var(--accent);
489
+ color: var(--on-accent);
490
+ font-size: var(--text-xs);
491
+ font-weight: var(--weight-bold);
492
+ font-variant-numeric: tabular-nums;
493
+ }
494
+
495
+ .room-row-top .unread-mark {
496
+ margin-left: auto;
497
+ }
498
+
499
+ .room-row-top .unread-mark + .room-row-time {
500
+ margin-left: 0;
501
+ }
502
+
503
+ .switcher-name .unread-mark {
504
+ margin-left: auto;
505
+ }
506
+
507
+ .plain {
508
+ white-space: pre-wrap;
509
+ overflow-wrap: anywhere;
510
+ }
511
+
512
+ .label-chip {
513
+ padding: 0 var(--space-2);
514
+ border-radius: var(--radius-full);
515
+ background: var(--surface-3);
516
+ color: var(--muted);
517
+ font-size: var(--text-xs);
518
+ font-weight: var(--weight-medium);
519
+ }
520
+
521
+ .message[data-author="assistant"] .bubble {
522
+ border-color: transparent;
523
+ background: var(--accent-soft);
524
+ }
525
+
526
+ .message[data-author="member"]:not([data-mine]) .bubble {
527
+ background: var(--surface-2);
528
+ }
529
+
530
+ .message[data-highlight] .bubble {
531
+ animation: host-highlight 2.4s var(--ease-out) both;
532
+ }
533
+
534
+ @keyframes host-highlight {
535
+ 0%, 60% {
536
+ box-shadow: 0 0 0 3px var(--accent);
537
+ }
538
+ }
539
+
540
+ .message-edited,
541
+ .message-expired {
542
+ margin: var(--space-1) 0 0;
543
+ color: var(--muted);
544
+ font-size: var(--text-xs);
545
+ }
546
+
547
+ .host-notice {
548
+ display: flex;
549
+ align-items: flex-start;
550
+ gap: var(--space-2);
551
+ margin: var(--space-3) auto;
552
+ max-width: min(36rem, 92%);
553
+ padding: var(--space-2) var(--space-3);
554
+ border: 1px dashed var(--border-strong);
555
+ border-radius: var(--radius-lg);
556
+ background: var(--surface-2);
557
+ color: var(--muted);
558
+ font-size: var(--text-sm);
559
+ }
560
+
561
+ .host-notice[data-highlight] {
562
+ animation: host-highlight 2.4s var(--ease-out) both;
563
+ }
564
+
565
+ .host-notice > svg {
566
+ flex: none;
567
+ margin-top: 0.2rem;
568
+ }
569
+
570
+ .host-notice time {
571
+ margin-left: auto;
572
+ padding-left: var(--space-2);
573
+ font-size: var(--text-xs);
574
+ white-space: nowrap;
575
+ }
576
+
577
+ .new-divider {
578
+ display: flex;
579
+ align-items: center;
580
+ gap: var(--space-3);
581
+ margin: var(--space-3) 0 var(--space-1);
582
+ color: var(--accent);
583
+ font-size: var(--text-xs);
584
+ font-weight: var(--weight-bold);
585
+ }
586
+
587
+ .new-divider::before,
588
+ .new-divider::after {
589
+ content: "";
590
+ flex: 1;
591
+ height: 1px;
592
+ background: var(--accent);
593
+ opacity: 0.55;
594
+ }
595
+
596
+ .seen {
597
+ display: flex;
598
+ justify-content: flex-end;
599
+ flex-wrap: wrap;
600
+ gap: var(--space-2);
601
+ padding: 0 var(--space-1);
602
+ color: var(--muted);
603
+ font-size: var(--text-xs);
604
+ }
605
+
606
+ .seen-toggle {
607
+ display: inline-flex;
608
+ align-items: center;
609
+ gap: var(--space-1);
610
+ min-height: 0;
611
+ padding: 0 var(--space-1);
612
+ border: 0;
613
+ background: none;
614
+ color: inherit;
615
+ font: inherit;
616
+ cursor: pointer;
617
+ }
618
+
619
+ .seen-toggle .hpic + .hpic {
620
+ margin-left: -0.35rem;
621
+ box-shadow: 0 0 0 1.5px var(--bg);
622
+ }
623
+
624
+ .seen-names {
625
+ flex-basis: 100%;
626
+ text-align: right;
627
+ }
628
+
629
+ .host-head-fields {
630
+ display: flex;
631
+ flex-wrap: wrap;
632
+ gap: 0 var(--space-4);
633
+ margin: 0;
634
+ padding: var(--space-1) var(--space-4);
635
+ border-bottom: 1px solid var(--border);
636
+ background: var(--surface);
637
+ font-size: var(--text-xs);
638
+ }
639
+
640
+ .host-head-fields > div {
641
+ display: flex;
642
+ gap: var(--space-2);
643
+ min-width: 0;
644
+ }
645
+
646
+ .host-head-fields dt {
647
+ color: var(--muted);
648
+ }
649
+
650
+ .host-head-fields dd {
651
+ margin: 0;
652
+ min-width: 0;
653
+ overflow-wrap: anywhere;
654
+ }
655
+
656
+ .host-banner {
657
+ margin: 0;
658
+ padding: var(--space-1) var(--space-4);
659
+ border-bottom: 1px solid var(--border);
660
+ font-size: var(--text-sm);
661
+ }
662
+
663
+ .host-banner[data-tone="warn"] {
664
+ background: var(--warn-soft);
665
+ }
666
+
667
+ .host-banner[data-tone="risk"] {
668
+ background: var(--danger-soft);
669
+ color: var(--danger);
670
+ }
671
+
672
+ .host-actions {
673
+ display: flex;
674
+ flex-wrap: wrap;
675
+ gap: var(--space-2);
676
+ }
677
+
678
+ .host-actions.bar {
679
+ flex-wrap: nowrap;
680
+ padding: var(--space-2) var(--space-4);
681
+ border-bottom: 1px solid var(--border);
682
+ overflow-x: auto;
683
+ }
684
+
685
+ .host-actions.bar > button {
686
+ flex: none;
687
+ min-height: 2.25rem;
688
+ padding: 0 var(--space-3);
689
+ font-size: var(--text-sm);
690
+ }
691
+
692
+ .host-cards {
693
+ display: flex;
694
+ flex-direction: column;
695
+ border-top: 1px solid var(--border);
696
+ background: var(--surface-2);
697
+ }
698
+
699
+ .host-cards-toggle {
700
+ display: flex;
701
+ align-items: center;
702
+ gap: var(--space-2);
703
+ min-height: 2.5rem;
704
+ padding: 0 var(--space-4);
705
+ border: 0;
706
+ border-radius: 0;
707
+ background: none;
708
+ color: var(--text);
709
+ font: inherit;
710
+ font-size: var(--text-sm);
711
+ text-align: left;
712
+ overflow: hidden;
713
+ }
714
+
715
+ .host-cards-toggle > span {
716
+ min-width: 0;
717
+ overflow: hidden;
718
+ text-overflow: ellipsis;
719
+ white-space: nowrap;
720
+ }
721
+
722
+ .host-cards-toggle > svg {
723
+ flex: none;
724
+ transition: transform var(--dur-fast) var(--ease-out);
725
+ }
726
+
727
+ .host-cards[data-open] .host-cards-toggle > svg {
728
+ transform: rotate(90deg);
729
+ }
730
+
731
+ .host-cards-body {
732
+ display: flex;
733
+ flex-direction: column;
734
+ gap: var(--space-2);
735
+ max-height: min(16rem, 34vh);
736
+ padding: 0 var(--space-4) var(--space-3);
737
+ overflow-y: auto;
738
+ }
739
+
740
+ .host-card {
741
+ display: flex;
742
+ flex-direction: column;
743
+ gap: var(--space-2);
744
+ padding: var(--space-3);
745
+ border: 1px solid var(--border);
746
+ border-left-width: 4px;
747
+ border-radius: var(--radius-lg);
748
+ background: var(--surface);
749
+ }
750
+
751
+ .host-card[data-tone="ok"] {
752
+ border-left-color: var(--success);
753
+ }
754
+
755
+ .host-card[data-tone="warn"] {
756
+ border-left-color: var(--warn);
757
+ }
758
+
759
+ .host-card[data-tone="risk"] {
760
+ border-left-color: var(--danger);
761
+ }
762
+
763
+ .host-card[data-tone="note"] {
764
+ border-left-color: var(--accent);
765
+ }
766
+
767
+ .host-card[data-state="done"],
768
+ .host-card[data-state="superseded"],
769
+ .host-card[data-state="expired"] {
770
+ opacity: 0.7;
771
+ }
772
+
773
+ .host-card header {
774
+ display: flex;
775
+ align-items: center;
776
+ gap: var(--space-2);
777
+ }
778
+
779
+ .host-card h3 {
780
+ flex: 1;
781
+ margin: 0;
782
+ font-size: var(--text-md);
783
+ }
784
+
785
+ .host-card-links {
786
+ display: flex;
787
+ flex-wrap: wrap;
788
+ gap: var(--space-1) var(--space-4);
789
+ font-size: var(--text-sm);
790
+ }
791
+
792
+ .host-cards-older {
793
+ font-size: var(--text-sm);
794
+ color: var(--muted);
795
+ }
796
+
797
+ .host-cards-older > summary {
798
+ cursor: pointer;
799
+ }
800
+
801
+ .section-icon {
802
+ margin-right: var(--space-1);
803
+ vertical-align: -2px;
804
+ }
805
+
806
+ .host-form {
807
+ display: flex;
808
+ flex-direction: column;
809
+ gap: var(--space-3);
810
+ }
811
+
812
+ .host-field {
813
+ display: flex;
814
+ flex-direction: column;
815
+ gap: var(--space-1);
816
+ min-width: 0;
817
+ }
818
+
819
+ .host-field > label,
820
+ .host-field > legend {
821
+ font-size: var(--text-sm);
822
+ font-weight: var(--weight-medium);
823
+ }
824
+
825
+ .host-field .hint {
826
+ color: var(--muted);
827
+ font-size: var(--text-xs);
828
+ }
829
+
830
+ .host-field .field-error {
831
+ color: var(--danger);
832
+ font-size: var(--text-sm);
833
+ }
834
+
835
+ .host-field fieldset {
836
+ display: flex;
837
+ flex-direction: column;
838
+ gap: var(--space-1);
839
+ margin: 0;
840
+ padding: 0;
841
+ border: 0;
842
+ max-height: 14rem;
843
+ overflow-y: auto;
844
+ }
845
+
846
+ .host-field fieldset label {
847
+ display: flex;
848
+ align-items: center;
849
+ gap: var(--space-2);
850
+ min-height: var(--touch);
851
+ }
852
+
853
+ .host-field select[size] {
854
+ min-height: 9rem;
855
+ }
856
+
857
+ .host-list {
858
+ display: flex;
859
+ flex-direction: column;
860
+ gap: var(--space-2);
861
+ margin: 0;
862
+ padding: 0;
863
+ list-style: none;
864
+ }
865
+
866
+ .host-list > li {
867
+ display: flex;
868
+ align-items: center;
869
+ gap: var(--space-3);
870
+ padding: var(--space-3);
871
+ border: 1px solid var(--border);
872
+ border-radius: var(--radius-lg);
873
+ background: var(--surface);
874
+ }
875
+
876
+ .host-list-main {
877
+ display: flex;
878
+ flex: 1;
879
+ flex-direction: column;
880
+ min-width: 0;
881
+ }
882
+
883
+ .host-list-main > a,
884
+ .host-list-main > strong {
885
+ color: var(--text);
886
+ font-weight: var(--weight-medium);
887
+ text-decoration: none;
888
+ overflow-wrap: anywhere;
889
+ }
890
+
891
+ .host-list-main > span {
892
+ color: var(--muted);
893
+ font-size: var(--text-sm);
894
+ }
895
+
896
+ .attention-dot {
897
+ flex: none;
898
+ width: 0.6rem;
899
+ height: 0.6rem;
900
+ border-radius: var(--radius-full);
901
+ background: var(--danger);
902
+ }
903
+
904
+ .kind-filter {
905
+ width: 100%;
906
+ }
907
+
908
+ .kind-row-picture {
909
+ position: relative;
910
+ display: inline-flex;
911
+ }
912
+
913
+ .kind-row-picture .attention-dot {
914
+ position: absolute;
915
+ top: -1px;
916
+ right: -1px;
917
+ box-shadow: 0 0 0 2px var(--surface);
918
+ }
919
+ `,document.head.append(a)}je();function p(a){if(!a)return;if("file"in a)return`api/files/${encodeURIComponent(a.file)}`;if("principal"in a)return`api/people/${encodeURIComponent(a.principal)}/picture`;return}function f(a){let t=a.trim().split(/\s+/).filter(Boolean),o=[...t[0]??"?"][0]??"?";if(/[\u3400-\u9fff]/.test(o))return o;let i=t.length>1?[...t.at(-1)??""][0]:void 0;return`${o}${i??""}`.toUpperCase()}function h(a){let t=0;for(let o of a)t=(t*31+(o.codePointAt(0)??0))%360;return`hsl(${t} 42% 40%)`}function Ke(a){let[t,o]=r(!1),i=a.size??32,n=t?void 0:p(a.picture),s=a.picture&&"initials"in a.picture?a.picture:void 0,l=s?.initials??f(a.name),c=s?.color??h(a.name);return e("span",{className:"hpic",style:{width:i,height:i,fontSize:Math.round(i*0.4),...n?{}:{background:c}},children:n?e("img",{src:n,alt:"",loading:"lazy",decoding:"async",onError:()=>o(!0)}):e("span",{"aria-hidden":"true",children:l})})}
920
+ export{je,Ke};