@openpalm/ui 0.11.0-rc.11 → 0.11.0-rc.13

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 (239) hide show
  1. package/build/.openpalm-ui-version +1 -1
  2. package/build/client/_app/immutable/assets/0.nenI9xO9.css +1 -0
  3. package/build/client/_app/immutable/assets/0.nenI9xO9.css.br +0 -0
  4. package/build/client/_app/immutable/assets/0.nenI9xO9.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/4.j3F-W7h_.css +1 -0
  6. package/build/client/_app/immutable/assets/4.j3F-W7h_.css.br +0 -0
  7. package/build/client/_app/immutable/assets/4.j3F-W7h_.css.gz +0 -0
  8. package/build/client/_app/immutable/assets/7.CzC8JVIO.css +1 -0
  9. package/build/client/_app/immutable/assets/7.CzC8JVIO.css.br +0 -0
  10. package/build/client/_app/immutable/assets/7.CzC8JVIO.css.gz +0 -0
  11. package/build/client/_app/immutable/assets/8.cpz_TytB.css +1 -0
  12. package/build/client/_app/immutable/assets/8.cpz_TytB.css.br +0 -0
  13. package/build/client/_app/immutable/assets/8.cpz_TytB.css.gz +0 -0
  14. package/build/client/_app/immutable/assets/AuthGate._tqG1OIX.css +1 -0
  15. package/build/client/_app/immutable/assets/AuthGate._tqG1OIX.css.br +0 -0
  16. package/build/client/_app/immutable/assets/AuthGate._tqG1OIX.css.gz +0 -0
  17. package/build/client/_app/immutable/assets/ModeSwitch.DVIv_V4C.css +1 -0
  18. package/build/client/_app/immutable/assets/ModeSwitch.DVIv_V4C.css.br +0 -0
  19. package/build/client/_app/immutable/assets/ModeSwitch.DVIv_V4C.css.gz +0 -0
  20. package/build/client/_app/immutable/assets/Spinner.BtzHSsat.css +1 -0
  21. package/build/client/_app/immutable/assets/Spinner.BtzHSsat.css.br +2 -0
  22. package/build/client/_app/immutable/assets/Spinner.BtzHSsat.css.gz +0 -0
  23. package/build/client/_app/immutable/assets/VoiceProfileSelector.B8FTffwl.css +1 -0
  24. package/build/client/_app/immutable/assets/VoiceProfileSelector.B8FTffwl.css.br +0 -0
  25. package/build/client/_app/immutable/assets/VoiceProfileSelector.B8FTffwl.css.gz +0 -0
  26. package/build/client/_app/immutable/chunks/0swOyi-5.js +3 -0
  27. package/build/client/_app/immutable/chunks/0swOyi-5.js.br +0 -0
  28. package/build/client/_app/immutable/chunks/0swOyi-5.js.gz +0 -0
  29. package/build/client/_app/immutable/chunks/B1uQvvlv.js +5 -0
  30. package/build/client/_app/immutable/chunks/B1uQvvlv.js.br +0 -0
  31. package/build/client/_app/immutable/chunks/B1uQvvlv.js.gz +0 -0
  32. package/build/client/_app/immutable/chunks/{DpdFx-ph.js → BBdT9Cjm.js} +1 -1
  33. package/build/client/_app/immutable/chunks/BBdT9Cjm.js.br +0 -0
  34. package/build/client/_app/immutable/chunks/BBdT9Cjm.js.gz +0 -0
  35. package/build/client/_app/immutable/chunks/{BxZ6a55y.js → BPh8tqAg.js} +1 -1
  36. package/build/client/_app/immutable/chunks/BPh8tqAg.js.br +2 -0
  37. package/build/client/_app/immutable/chunks/BPh8tqAg.js.gz +0 -0
  38. package/build/client/_app/immutable/chunks/BQ0vnNWj.js +1 -0
  39. package/build/client/_app/immutable/chunks/BQ0vnNWj.js.br +1 -0
  40. package/build/client/_app/immutable/chunks/BQ0vnNWj.js.gz +0 -0
  41. package/build/client/_app/immutable/chunks/{CJkMgfFh.js → BQrb5YOM.js} +1 -1
  42. package/build/client/_app/immutable/chunks/BQrb5YOM.js.br +0 -0
  43. package/build/client/_app/immutable/chunks/BQrb5YOM.js.gz +0 -0
  44. package/build/client/_app/immutable/chunks/Bmfn2m9N.js +1 -0
  45. package/build/client/_app/immutable/chunks/Bmfn2m9N.js.br +1 -0
  46. package/build/client/_app/immutable/chunks/Bmfn2m9N.js.gz +0 -0
  47. package/build/client/_app/immutable/chunks/CrcMJfbz.js +1 -0
  48. package/build/client/_app/immutable/chunks/CrcMJfbz.js.br +0 -0
  49. package/build/client/_app/immutable/chunks/CrcMJfbz.js.gz +0 -0
  50. package/build/client/_app/immutable/chunks/E7W0MQkU.js +1 -0
  51. package/build/client/_app/immutable/chunks/E7W0MQkU.js.br +0 -0
  52. package/build/client/_app/immutable/chunks/E7W0MQkU.js.gz +0 -0
  53. package/build/client/_app/immutable/entry/app.9wfmQKXa.js +2 -0
  54. package/build/client/_app/immutable/entry/app.9wfmQKXa.js.br +0 -0
  55. package/build/client/_app/immutable/entry/app.9wfmQKXa.js.gz +0 -0
  56. package/build/client/_app/immutable/entry/start.BzWuQgSn.js +1 -0
  57. package/build/client/_app/immutable/entry/start.BzWuQgSn.js.br +0 -0
  58. package/build/client/_app/immutable/entry/start.BzWuQgSn.js.gz +0 -0
  59. package/build/client/_app/immutable/nodes/0.DxAGOZgx.js +1 -0
  60. package/build/client/_app/immutable/nodes/0.DxAGOZgx.js.br +0 -0
  61. package/build/client/_app/immutable/nodes/0.DxAGOZgx.js.gz +0 -0
  62. package/build/client/_app/immutable/nodes/1.B-z3blIe.js +1 -0
  63. package/build/client/_app/immutable/nodes/1.B-z3blIe.js.br +1 -0
  64. package/build/client/_app/immutable/nodes/1.B-z3blIe.js.gz +0 -0
  65. package/build/client/_app/immutable/nodes/2.B-8ehRO1.js +1 -0
  66. package/build/client/_app/immutable/nodes/2.B-8ehRO1.js.br +0 -0
  67. package/build/client/_app/immutable/nodes/2.B-8ehRO1.js.gz +0 -0
  68. package/build/client/_app/immutable/nodes/3.DHPuQEyR.js +1 -0
  69. package/build/client/_app/immutable/nodes/3.DHPuQEyR.js.br +0 -0
  70. package/build/client/_app/immutable/nodes/3.DHPuQEyR.js.gz +0 -0
  71. package/build/client/_app/immutable/nodes/4.DOO_QIq1.js +18 -0
  72. package/build/client/_app/immutable/nodes/4.DOO_QIq1.js.br +0 -0
  73. package/build/client/_app/immutable/nodes/4.DOO_QIq1.js.gz +0 -0
  74. package/build/client/_app/immutable/nodes/5.BrAtimvQ.js +4 -0
  75. package/build/client/_app/immutable/nodes/5.BrAtimvQ.js.br +0 -0
  76. package/build/client/_app/immutable/nodes/5.BrAtimvQ.js.gz +0 -0
  77. package/build/client/_app/immutable/nodes/6.CDpI1TrW.js +1 -0
  78. package/build/client/_app/immutable/nodes/6.CDpI1TrW.js.br +0 -0
  79. package/build/client/_app/immutable/nodes/6.CDpI1TrW.js.gz +0 -0
  80. package/build/client/_app/immutable/nodes/{7.fFA0e6kz.js → 7.B5KYnWwU.js} +7 -7
  81. package/build/client/_app/immutable/nodes/7.B5KYnWwU.js.br +0 -0
  82. package/build/client/_app/immutable/nodes/7.B5KYnWwU.js.gz +0 -0
  83. package/build/client/_app/immutable/nodes/8.2jRmEBBC.js +2 -0
  84. package/build/client/_app/immutable/nodes/8.2jRmEBBC.js.br +0 -0
  85. package/build/client/_app/immutable/nodes/8.2jRmEBBC.js.gz +0 -0
  86. package/build/client/_app/version.json +1 -1
  87. package/build/client/_app/version.json.br +1 -1
  88. package/build/client/_app/version.json.gz +0 -0
  89. package/build/server/chunks/0-CP9GcQBP.js +9 -0
  90. package/build/server/chunks/{0-TTdZdv8o.js.map → 0-CP9GcQBP.js.map} +1 -1
  91. package/build/server/chunks/1-BDxTrwG3.js +9 -0
  92. package/build/server/chunks/{1-BhLqDyOn.js.map → 1-BDxTrwG3.js.map} +1 -1
  93. package/build/server/chunks/2-DQWoUtW1.js +9 -0
  94. package/build/server/chunks/{2-C2y4ydWU.js.map → 2-DQWoUtW1.js.map} +1 -1
  95. package/build/server/chunks/{3-BgeGdVvT.js → 3-gylRjzeN.js} +2 -2
  96. package/build/server/chunks/{3-BgeGdVvT.js.map → 3-gylRjzeN.js.map} +1 -1
  97. package/build/server/chunks/4-CBgm4iSo.js +9 -0
  98. package/build/server/chunks/4-CBgm4iSo.js.map +1 -0
  99. package/build/server/chunks/5-CD1fuYOe.js +9 -0
  100. package/build/server/chunks/5-CD1fuYOe.js.map +1 -0
  101. package/build/server/chunks/6-B6tmbcQ8.js +9 -0
  102. package/build/server/chunks/6-B6tmbcQ8.js.map +1 -0
  103. package/build/server/chunks/7-m4KLf_Gx.js +9 -0
  104. package/build/server/chunks/7-m4KLf_Gx.js.map +1 -0
  105. package/build/server/chunks/8-CmPpxrjv.js +9 -0
  106. package/build/server/chunks/8-CmPpxrjv.js.map +1 -0
  107. package/build/server/chunks/{AuthGate-C3ZisQbA.js → AuthGate-BcB49fE5.js} +44 -41
  108. package/build/server/chunks/AuthGate-BcB49fE5.js.map +1 -0
  109. package/build/server/chunks/ModeSwitch-D26evPMy.js +15 -0
  110. package/build/server/chunks/ModeSwitch-D26evPMy.js.map +1 -0
  111. package/build/server/chunks/Spinner-Bk6e83RX.js +12 -0
  112. package/build/server/chunks/Spinner-Bk6e83RX.js.map +1 -0
  113. package/build/server/chunks/VoiceProfileSelector-CbOV_v5A.js +306 -0
  114. package/build/server/chunks/VoiceProfileSelector-CbOV_v5A.js.map +1 -0
  115. package/build/server/chunks/{_layout.svelte-B93aaRP_.js → _layout.svelte-BV7A7zff.js} +2 -2
  116. package/build/server/chunks/{_layout.svelte-B93aaRP_.js.map → _layout.svelte-BV7A7zff.js.map} +1 -1
  117. package/build/server/chunks/{_layout.svelte-CcloHuB_.js → _layout.svelte-C8ggVfth.js} +8 -8
  118. package/build/server/chunks/_layout.svelte-C8ggVfth.js.map +1 -0
  119. package/build/server/chunks/_page.svelte-CEjRvc8B.js +2579 -0
  120. package/build/server/chunks/_page.svelte-CEjRvc8B.js.map +1 -0
  121. package/build/server/chunks/{_page.svelte-C6H2En_w.js → _page.svelte-Cy4kcLwu.js} +7 -6
  122. package/build/server/chunks/{_page.svelte-C6H2En_w.js.map → _page.svelte-Cy4kcLwu.js.map} +1 -1
  123. package/build/server/chunks/{_page.svelte-D0gMlmzQ.js → _page.svelte-DLAHj-kk.js} +6 -14
  124. package/build/server/chunks/_page.svelte-DLAHj-kk.js.map +1 -0
  125. package/build/server/chunks/{_page.svelte-DA9eUO0x.js → _page.svelte-DrWHHwCU.js} +8 -7
  126. package/build/server/chunks/{_page.svelte-DA9eUO0x.js.map → _page.svelte-DrWHHwCU.js.map} +1 -1
  127. package/build/server/chunks/{_page.svelte-Arw4vnr_.js → _page.svelte-WWZsjJuR.js} +25 -22
  128. package/build/server/chunks/_page.svelte-WWZsjJuR.js.map +1 -0
  129. package/build/server/chunks/{dev-DjANv7AF.js → dev-B6xUe35c.js} +23 -2
  130. package/build/server/chunks/{dev-DjANv7AF.js.map → dev-B6xUe35c.js.map} +1 -1
  131. package/build/server/chunks/{error.svelte-CEMlYvrw.js → error.svelte-CcHm-30A.js} +4 -4
  132. package/build/server/chunks/{error.svelte-CEMlYvrw.js.map → error.svelte-CcHm-30A.js.map} +1 -1
  133. package/build/server/chunks/{internal-CStLdOSk.js → internal-B08Y9iTe.js} +3 -3
  134. package/build/server/chunks/{internal-CStLdOSk.js.map → internal-B08Y9iTe.js.map} +1 -1
  135. package/build/server/chunks/{state-BCMZi_P3.js → state-CFHLgqLs.js} +3 -3
  136. package/build/server/chunks/{state-BCMZi_P3.js.map → state-CFHLgqLs.js.map} +1 -1
  137. package/build/server/chunks/{theme-state.svelte-PtPMmKGN.js → theme-state.svelte-y-mfJax7.js} +9 -2
  138. package/build/server/chunks/theme-state.svelte-y-mfJax7.js.map +1 -0
  139. package/build/server/index.js +2 -2
  140. package/build/server/index.js.map +1 -1
  141. package/build/server/manifest.js +10 -10
  142. package/build/server/manifest.js.map +1 -1
  143. package/package.json +1 -1
  144. package/build/client/_app/immutable/assets/0.p3iHeEvq.css +0 -1
  145. package/build/client/_app/immutable/assets/0.p3iHeEvq.css.br +0 -0
  146. package/build/client/_app/immutable/assets/0.p3iHeEvq.css.gz +0 -0
  147. package/build/client/_app/immutable/assets/4.DhrSl6jB.css +0 -1
  148. package/build/client/_app/immutable/assets/4.DhrSl6jB.css.br +0 -0
  149. package/build/client/_app/immutable/assets/4.DhrSl6jB.css.gz +0 -0
  150. package/build/client/_app/immutable/assets/7.Cucah5cY.css +0 -1
  151. package/build/client/_app/immutable/assets/7.Cucah5cY.css.br +0 -0
  152. package/build/client/_app/immutable/assets/7.Cucah5cY.css.gz +0 -0
  153. package/build/client/_app/immutable/assets/8.DjrHy5wu.css +0 -1
  154. package/build/client/_app/immutable/assets/8.DjrHy5wu.css.br +0 -0
  155. package/build/client/_app/immutable/assets/8.DjrHy5wu.css.gz +0 -0
  156. package/build/client/_app/immutable/assets/AuthGate.B8fOC_pJ.css +0 -1
  157. package/build/client/_app/immutable/assets/AuthGate.B8fOC_pJ.css.br +0 -0
  158. package/build/client/_app/immutable/assets/AuthGate.B8fOC_pJ.css.gz +0 -0
  159. package/build/client/_app/immutable/assets/ModeSwitch.RmRIDur-.css +0 -1
  160. package/build/client/_app/immutable/assets/ModeSwitch.RmRIDur-.css.br +0 -0
  161. package/build/client/_app/immutable/assets/ModeSwitch.RmRIDur-.css.gz +0 -0
  162. package/build/client/_app/immutable/assets/VoiceProfileSelector.CM_o2XIa.css +0 -1
  163. package/build/client/_app/immutable/assets/VoiceProfileSelector.CM_o2XIa.css.br +0 -0
  164. package/build/client/_app/immutable/assets/VoiceProfileSelector.CM_o2XIa.css.gz +0 -0
  165. package/build/client/_app/immutable/chunks/7rWcSIlt.js +0 -1
  166. package/build/client/_app/immutable/chunks/7rWcSIlt.js.br +0 -0
  167. package/build/client/_app/immutable/chunks/7rWcSIlt.js.gz +0 -0
  168. package/build/client/_app/immutable/chunks/B7ArSvo1.js +0 -1
  169. package/build/client/_app/immutable/chunks/B7ArSvo1.js.br +0 -0
  170. package/build/client/_app/immutable/chunks/B7ArSvo1.js.gz +0 -0
  171. package/build/client/_app/immutable/chunks/BwTF6U35.js +0 -3
  172. package/build/client/_app/immutable/chunks/BwTF6U35.js.br +0 -0
  173. package/build/client/_app/immutable/chunks/BwTF6U35.js.gz +0 -0
  174. package/build/client/_app/immutable/chunks/BxZ6a55y.js.br +0 -0
  175. package/build/client/_app/immutable/chunks/BxZ6a55y.js.gz +0 -0
  176. package/build/client/_app/immutable/chunks/CJkMgfFh.js.br +0 -0
  177. package/build/client/_app/immutable/chunks/CJkMgfFh.js.gz +0 -0
  178. package/build/client/_app/immutable/chunks/CaNTMSit.js +0 -5
  179. package/build/client/_app/immutable/chunks/CaNTMSit.js.br +0 -0
  180. package/build/client/_app/immutable/chunks/CaNTMSit.js.gz +0 -0
  181. package/build/client/_app/immutable/chunks/DpdFx-ph.js.br +0 -0
  182. package/build/client/_app/immutable/chunks/DpdFx-ph.js.gz +0 -0
  183. package/build/client/_app/immutable/chunks/os2NZ37U.js +0 -1
  184. package/build/client/_app/immutable/chunks/os2NZ37U.js.br +0 -1
  185. package/build/client/_app/immutable/chunks/os2NZ37U.js.gz +0 -0
  186. package/build/client/_app/immutable/entry/app.CzMd4RbT.js +0 -2
  187. package/build/client/_app/immutable/entry/app.CzMd4RbT.js.br +0 -0
  188. package/build/client/_app/immutable/entry/app.CzMd4RbT.js.gz +0 -0
  189. package/build/client/_app/immutable/entry/start.QaKTVCwD.js +0 -1
  190. package/build/client/_app/immutable/entry/start.QaKTVCwD.js.br +0 -0
  191. package/build/client/_app/immutable/entry/start.QaKTVCwD.js.gz +0 -0
  192. package/build/client/_app/immutable/nodes/0.BUaVTC13.js +0 -1
  193. package/build/client/_app/immutable/nodes/0.BUaVTC13.js.br +0 -0
  194. package/build/client/_app/immutable/nodes/0.BUaVTC13.js.gz +0 -0
  195. package/build/client/_app/immutable/nodes/1.D9TRUzbv.js +0 -1
  196. package/build/client/_app/immutable/nodes/1.D9TRUzbv.js.br +0 -2
  197. package/build/client/_app/immutable/nodes/1.D9TRUzbv.js.gz +0 -0
  198. package/build/client/_app/immutable/nodes/2.ojh8oE7F.js +0 -1
  199. package/build/client/_app/immutable/nodes/2.ojh8oE7F.js.br +0 -0
  200. package/build/client/_app/immutable/nodes/2.ojh8oE7F.js.gz +0 -0
  201. package/build/client/_app/immutable/nodes/3.DeAC3yVJ.js +0 -1
  202. package/build/client/_app/immutable/nodes/3.DeAC3yVJ.js.br +0 -0
  203. package/build/client/_app/immutable/nodes/3.DeAC3yVJ.js.gz +0 -0
  204. package/build/client/_app/immutable/nodes/4.5fL8qHix.js +0 -18
  205. package/build/client/_app/immutable/nodes/4.5fL8qHix.js.br +0 -0
  206. package/build/client/_app/immutable/nodes/4.5fL8qHix.js.gz +0 -0
  207. package/build/client/_app/immutable/nodes/5.DAAeB39N.js +0 -4
  208. package/build/client/_app/immutable/nodes/5.DAAeB39N.js.br +0 -0
  209. package/build/client/_app/immutable/nodes/5.DAAeB39N.js.gz +0 -0
  210. package/build/client/_app/immutable/nodes/6.CmMKgobq.js +0 -1
  211. package/build/client/_app/immutable/nodes/6.CmMKgobq.js.br +0 -0
  212. package/build/client/_app/immutable/nodes/6.CmMKgobq.js.gz +0 -0
  213. package/build/client/_app/immutable/nodes/7.fFA0e6kz.js.br +0 -0
  214. package/build/client/_app/immutable/nodes/7.fFA0e6kz.js.gz +0 -0
  215. package/build/client/_app/immutable/nodes/8.Rc3xcFgu.js +0 -2
  216. package/build/client/_app/immutable/nodes/8.Rc3xcFgu.js.br +0 -0
  217. package/build/client/_app/immutable/nodes/8.Rc3xcFgu.js.gz +0 -0
  218. package/build/server/chunks/0-TTdZdv8o.js +0 -9
  219. package/build/server/chunks/1-BhLqDyOn.js +0 -9
  220. package/build/server/chunks/2-C2y4ydWU.js +0 -9
  221. package/build/server/chunks/4-D6mAJO8F.js +0 -9
  222. package/build/server/chunks/4-D6mAJO8F.js.map +0 -1
  223. package/build/server/chunks/5-D5Apamdo.js +0 -9
  224. package/build/server/chunks/5-D5Apamdo.js.map +0 -1
  225. package/build/server/chunks/6-aCBWYjjQ.js +0 -9
  226. package/build/server/chunks/6-aCBWYjjQ.js.map +0 -1
  227. package/build/server/chunks/7-NlChqFlW.js +0 -9
  228. package/build/server/chunks/7-NlChqFlW.js.map +0 -1
  229. package/build/server/chunks/8-EJHw3wqt.js +0 -9
  230. package/build/server/chunks/8-EJHw3wqt.js.map +0 -1
  231. package/build/server/chunks/AuthGate-C3ZisQbA.js.map +0 -1
  232. package/build/server/chunks/ModeSwitch-B9a33ugm.js +0 -15
  233. package/build/server/chunks/ModeSwitch-B9a33ugm.js.map +0 -1
  234. package/build/server/chunks/_layout.svelte-CcloHuB_.js.map +0 -1
  235. package/build/server/chunks/_page.svelte-4WHOZ298.js +0 -408
  236. package/build/server/chunks/_page.svelte-4WHOZ298.js.map +0 -1
  237. package/build/server/chunks/_page.svelte-Arw4vnr_.js.map +0 -1
  238. package/build/server/chunks/_page.svelte-D0gMlmzQ.js.map +0 -1
  239. package/build/server/chunks/theme-state.svelte-PtPMmKGN.js.map +0 -1
@@ -1,13 +1,14 @@
1
- import { d as attr, p as escape_html, m as derived, e as attr_class, n as ensure_array_like } from './dev-DjANv7AF.js';
2
- import { o as onDestroy, p as page } from './state-BCMZi_P3.js';
3
- import { b as fetchEndpoints, k as setActiveEndpoint, l as listSessions, j as getSessionMessages, c as createSession, s as sendChatMessage, v as voiceState, m as speakText, o as stopSpeaking, d as destroyVoice, t as themeService } from './theme-state.svelte-PtPMmKGN.js';
1
+ import { d as attr, r as escape_html, o as derived, e as attr_class, p as ensure_array_like } from './dev-B6xUe35c.js';
2
+ import { o as onDestroy, p as page } from './state-CFHLgqLs.js';
3
+ import { e as fetchEndpoints, o as setActiveEndpoint, m as listSessions, l as getSessionMessages, c as createSession, s as sendChatMessage, v as voiceState, p as speakText, q as stopSpeaking, d as destroyVoice, t as themeService } from './theme-state.svelte-y-mfJax7.js';
4
+ import { S as Spinner } from './Spinner-Bk6e83RX.js';
4
5
 
5
- //#region src/lib/components/ThemeToggle.svelte
6
+ //#region src/lib/components/common/ThemeToggle.svelte
6
7
  function ThemeToggle($$renderer, $$props) {
7
8
  $$renderer.component(($$renderer) => {
8
9
  const isDark = derived(() => themeService.resolved === "dark");
9
10
  const label = derived(() => isDark() ? "Switch to light mode" : "Switch to dark mode");
10
- $$renderer.push(`<button type="button" class="theme-toggle svelte-1cmi4dh"${attr("aria-label", label())}${attr("aria-pressed", isDark())}${attr("title", label())}>`);
11
+ $$renderer.push(`<button type="button" class="theme-toggle svelte-1y2534t"${attr("aria-label", label())}${attr("aria-pressed", isDark())}${attr("title", label())}>`);
11
12
  if (isDark()) {
12
13
  $$renderer.push("<!--[0-->");
13
14
  $$renderer.push(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg>`);
@@ -523,7 +524,7 @@ var EndpointsService = class {
523
524
  };
524
525
  var endpointsService = new EndpointsService();
525
526
  //#endregion
526
- //#region src/lib/components/EndpointSwitcher.svelte
527
+ //#region src/lib/components/chat/EndpointSwitcher.svelte
527
528
  function EndpointSwitcher($$renderer, $$props) {
528
529
  $$renderer.component(($$renderer) => {
529
530
  const menuId = "endpoint-menu";
@@ -532,17 +533,17 @@ function EndpointSwitcher($$renderer, $$props) {
532
533
  const active = derived(() => endpointsService.active);
533
534
  const endpoints = derived(() => endpointsService.endpoints);
534
535
  const hasChoices = derived(() => endpoints().length > 1);
535
- $$renderer.push(`<div class="switcher svelte-1gh51ee"><button type="button" class="trigger svelte-1gh51ee" id="endpoint-trigger"${attr("popovertarget", hasChoices() ? menuId : void 0)} aria-haspopup="menu"${attr("aria-expanded", isOpen)}${attr("aria-controls", menuId)}${attr("aria-label", active() ? `Assistant endpoint: ${active().label}` : "Assistant endpoints")}${attr("title", active() ? `Connected to: ${active().label} (${active().url})` : "Assistant endpoints")}${attr("disabled", endpointsService.loading, true)}><svg class="trigger-icon svelte-1gh51ee" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="8" rx="2" ry="2"></rect><rect x="2" y="14" width="20" height="8" rx="2" ry="2"></rect><line x1="6" y1="6" x2="6.01" y2="6"></line><line x1="6" y1="18" x2="6.01" y2="18"></line></svg> <span class="dot svelte-1gh51ee" aria-hidden="true"></span> <span class="label svelte-1gh51ee">${escape_html(active()?.label ?? "Endpoint…")}</span> <span class="caret svelte-1gh51ee" aria-hidden="true">▾</span></button> <div${attr("id", menuId)} class="menu svelte-1gh51ee" popover="auto" role="menu" tabindex="-1"><div class="menu-header svelte-1gh51ee">Assistant endpoint</div> <!--[-->`);
536
+ $$renderer.push(`<div class="switcher svelte-48xr05"><button type="button" class="trigger svelte-48xr05" id="endpoint-trigger"${attr("popovertarget", hasChoices() ? menuId : void 0)} aria-haspopup="menu"${attr("aria-expanded", isOpen)}${attr("aria-controls", menuId)}${attr("aria-label", active() ? `Assistant endpoint: ${active().label}` : "Assistant endpoints")}${attr("title", active() ? `Connected to: ${active().label} (${active().url})` : "Assistant endpoints")}${attr("disabled", endpointsService.loading, true)}><svg class="trigger-icon svelte-48xr05" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="8" rx="2" ry="2"></rect><rect x="2" y="14" width="20" height="8" rx="2" ry="2"></rect><line x1="6" y1="6" x2="6.01" y2="6"></line><line x1="6" y1="18" x2="6.01" y2="18"></line></svg> <span class="dot svelte-48xr05" aria-hidden="true"></span> <span class="label svelte-48xr05">${escape_html(active()?.label ?? "Endpoint…")}</span> <span class="caret svelte-48xr05" aria-hidden="true">▾</span></button> <div${attr("id", menuId)} class="menu svelte-48xr05" popover="auto" role="menu" tabindex="-1"><div class="menu-header svelte-48xr05">Assistant endpoint</div> <!--[-->`);
536
537
  const each_array = ensure_array_like(endpoints());
537
538
  for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
538
539
  let ep = each_array[$$index];
539
- $$renderer.push(`<button type="button"${attr_class("menu-item svelte-1gh51ee", void 0, { "active": ep.id === active()?.id })} role="menuitemradio"${attr("aria-checked", ep.id === active()?.id)}${attr("popovertarget", menuId)} popovertargetaction="hide"${attr("disabled", switching, true)}><span class="check svelte-1gh51ee" aria-hidden="true">${escape_html(ep.id === active()?.id ? "●" : "○")}</span> <span class="menu-item-text svelte-1gh51ee"><span class="menu-item-label svelte-1gh51ee">${escape_html(ep.label)}</span> <span class="menu-item-url svelte-1gh51ee">${escape_html(ep.url)}</span></span></button>`);
540
+ $$renderer.push(`<button type="button"${attr_class("menu-item svelte-48xr05", void 0, { "active": ep.id === active()?.id })} role="menuitemradio"${attr("aria-checked", ep.id === active()?.id)}${attr("popovertarget", menuId)} popovertargetaction="hide"${attr("disabled", switching, true)}><span class="check svelte-48xr05" aria-hidden="true">${escape_html(ep.id === active()?.id ? "●" : "○")}</span> <span class="menu-item-text svelte-48xr05"><span class="menu-item-label svelte-48xr05">${escape_html(ep.label)}</span> <span class="menu-item-url svelte-48xr05">${escape_html(ep.url)}</span></span></button>`);
540
541
  }
541
- $$renderer.push(`<!--]--> <div class="menu-divider svelte-1gh51ee"></div> <a class="menu-item link svelte-1gh51ee" href="/admin/endpoints" role="menuitem">Manage endpoints…</a></div></div>`);
542
+ $$renderer.push(`<!--]--> <div class="menu-divider svelte-48xr05"></div> <a class="menu-item link svelte-48xr05" href="/admin/endpoints" role="menuitem">Manage endpoints…</a></div></div>`);
542
543
  });
543
544
  }
544
545
  //#endregion
545
- //#region src/lib/components/SessionPicker.svelte
546
+ //#region src/lib/components/chat/SessionPicker.svelte
546
547
  function SessionPicker($$renderer, $$props) {
547
548
  $$renderer.component(($$renderer) => {
548
549
  const menuId = "session-menu";
@@ -587,33 +588,35 @@ function SessionPicker($$renderer, $$props) {
587
588
  if (mo < 12) return `${mo}mo ago`;
588
589
  return `${Math.floor(day / 365)}y ago`;
589
590
  }
590
- $$renderer.push(`<div class="picker svelte-1owsj0q"><button type="button" class="trigger svelte-1owsj0q" id="session-trigger"${attr("popovertarget", menuId)} aria-haspopup="menu"${attr("aria-expanded", isOpen)}${attr("aria-controls", menuId)} aria-label="Sessions"${attr("title", triggerLabel())}><svg class="trigger-icon svelte-1owsj0q" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 9a2 2 0 0 1-2 2H6l-4 4V4c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2z"></path><path d="M18 9h2a2 2 0 0 1 2 2v11l-4-4h-6a2 2 0 0 1-2-2v-1"></path></svg> <span${attr_class("dot svelte-1owsj0q", void 0, { "connected": liveConnected() })} aria-hidden="true"${attr("title", liveConnected() ? "Live updates connected" : "Live updates disconnected")}></span> <span class="label svelte-1owsj0q">${escape_html(triggerLabel())}</span> <span class="caret svelte-1owsj0q" aria-hidden="true">▾</span></button> <div${attr("id", menuId)} class="menu svelte-1owsj0q" popover="auto" role="menu" tabindex="-1"><div class="menu-header svelte-1owsj0q">Sessions on ${escape_html(active()?.label ?? "this endpoint")}</div> `);
591
+ $$renderer.push(`<div class="picker svelte-cihcnl"><button type="button" class="trigger svelte-cihcnl" id="session-trigger"${attr("popovertarget", menuId)} aria-haspopup="menu"${attr("aria-expanded", isOpen)}${attr("aria-controls", menuId)} aria-label="Sessions"${attr("title", triggerLabel())}><svg class="trigger-icon svelte-cihcnl" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 9a2 2 0 0 1-2 2H6l-4 4V4c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2z"></path><path d="M18 9h2a2 2 0 0 1 2 2v11l-4-4h-6a2 2 0 0 1-2-2v-1"></path></svg> <span${attr_class("dot svelte-cihcnl", void 0, { "connected": liveConnected() })} aria-hidden="true"${attr("title", liveConnected() ? "Live updates connected" : "Live updates disconnected")}></span> <span class="label svelte-cihcnl">${escape_html(triggerLabel())}</span> <span class="caret svelte-cihcnl" aria-hidden="true">▾</span></button> <div${attr("id", menuId)} class="menu svelte-cihcnl" popover="auto" role="menu" tabindex="-1"><div class="menu-header svelte-cihcnl">Sessions on ${escape_html(active()?.label ?? "this endpoint")}</div> `);
591
592
  if (chat.sending) {
592
593
  $$renderer.push("<!--[0-->");
593
- $$renderer.push(`<div class="notice svelte-1owsj0q">Wait for the current reply to finish before switching.</div>`);
594
+ $$renderer.push(`<div class="notice svelte-cihcnl">Wait for the current reply to finish before switching.</div>`);
594
595
  } else $$renderer.push("<!--[-1-->");
595
- $$renderer.push(`<!--]--> <button type="button" class="menu-item new-btn svelte-1owsj0q" role="menuitem"${attr("popovertarget", menuId)} popovertargetaction="hide"${attr("disabled", chat.sending, true)}><span class="check svelte-1owsj0q" aria-hidden="true">+</span> <span class="menu-item-text svelte-1owsj0q"><span class="menu-item-label svelte-1owsj0q">New session</span></span></button> <div class="menu-divider svelte-1owsj0q"></div> `);
596
+ $$renderer.push(`<!--]--> <button type="button" class="menu-item new-btn svelte-cihcnl" role="menuitem"${attr("popovertarget", menuId)} popovertargetaction="hide"${attr("disabled", chat.sending, true)}><span class="check svelte-cihcnl" aria-hidden="true">+</span> <span class="menu-item-text svelte-cihcnl"><span class="menu-item-label svelte-cihcnl">New session</span></span></button> <div class="menu-divider svelte-cihcnl"></div> `);
596
597
  if (loading()) {
597
598
  $$renderer.push("<!--[0-->");
598
- $$renderer.push(`<div class="empty svelte-1owsj0q"><span class="spinner svelte-1owsj0q" aria-hidden="true"></span> <span>Loading sessions…</span></div>`);
599
+ $$renderer.push(`<div class="empty svelte-cihcnl">`);
600
+ Spinner($$renderer, { size: 12 });
601
+ $$renderer.push(`<!----> <span>Loading sessions…</span></div>`);
599
602
  } else if (error()) {
600
603
  $$renderer.push("<!--[1-->");
601
- $$renderer.push(`<div class="error svelte-1owsj0q"><span class="svelte-1owsj0q">${escape_html(error())}</span> <button type="button" class="retry-btn svelte-1owsj0q">Retry</button></div>`);
604
+ $$renderer.push(`<div class="error svelte-cihcnl"><span class="svelte-cihcnl">${escape_html(error())}</span> <button type="button" class="retry-btn svelte-cihcnl">Retry</button></div>`);
602
605
  } else if (sessions().length === 0) {
603
606
  $$renderer.push("<!--[2-->");
604
- $$renderer.push(`<div class="empty svelte-1owsj0q">No sessions yet. Start the first one.</div>`);
607
+ $$renderer.push(`<div class="empty svelte-cihcnl">No sessions yet. Start the first one.</div>`);
605
608
  } else {
606
609
  $$renderer.push("<!--[-1-->");
607
- $$renderer.push(`<div class="session-list svelte-1owsj0q" role="none"><!--[-->`);
610
+ $$renderer.push(`<div class="session-list svelte-cihcnl" role="none"><!--[-->`);
608
611
  const each_array = ensure_array_like(visibleSessions());
609
612
  for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
610
613
  let s = each_array[$$index];
611
- $$renderer.push(`<button type="button"${attr_class("menu-item session-item svelte-1owsj0q", void 0, { "active": s.id === activeSessionId() })} role="menuitemradio"${attr("aria-checked", s.id === activeSessionId())}${attr("popovertarget", menuId)} popovertargetaction="hide"${attr("disabled", chat.sending, true)}><span class="check svelte-1owsj0q" aria-hidden="true">${escape_html(s.id === activeSessionId() ? "●" : "○")}</span> <span class="menu-item-text svelte-1owsj0q"><span class="menu-item-label svelte-1owsj0q">${escape_html(s.title || "Untitled")}</span> <span class="menu-item-meta svelte-1owsj0q">${escape_html(formatRelative(s.updatedAt))}</span></span></button>`);
614
+ $$renderer.push(`<button type="button"${attr_class("menu-item session-item svelte-cihcnl", void 0, { "active": s.id === activeSessionId() })} role="menuitemradio"${attr("aria-checked", s.id === activeSessionId())}${attr("popovertarget", menuId)} popovertargetaction="hide"${attr("disabled", chat.sending, true)}><span class="check svelte-cihcnl" aria-hidden="true">${escape_html(s.id === activeSessionId() ? "●" : "○")}</span> <span class="menu-item-text svelte-cihcnl"><span class="menu-item-label svelte-cihcnl">${escape_html(s.title || "Untitled")}</span> <span class="menu-item-meta svelte-cihcnl">${escape_html(formatRelative(s.updatedAt))}</span></span></button>`);
612
615
  }
613
616
  $$renderer.push(`<!--]--></div> `);
614
617
  if (overflowCount() > 0) {
615
618
  $$renderer.push("<!--[0-->");
616
- $$renderer.push(`<button type="button" class="show-all svelte-1owsj0q">Show all (${escape_html(overflowCount())} more)</button>`);
619
+ $$renderer.push(`<button type="button" class="show-all svelte-cihcnl">Show all (${escape_html(overflowCount())} more)</button>`);
617
620
  } else $$renderer.push("<!--[-1-->");
618
621
  $$renderer.push(`<!--]-->`);
619
622
  }
@@ -621,7 +624,7 @@ function SessionPicker($$renderer, $$props) {
621
624
  });
622
625
  }
623
626
  //#endregion
624
- //#region src/lib/components/VoiceControl.svelte
627
+ //#region src/lib/components/chat/VoiceControl.svelte
625
628
  function VoiceControl($$renderer, $$props) {
626
629
  $$renderer.component(($$renderer) => {
627
630
  const MAX_INTERIM_CHARS = 48;
@@ -635,55 +638,55 @@ function VoiceControl($$renderer, $$props) {
635
638
  let isTranscribing = derived(() => voiceState.status === "transcribing");
636
639
  let isProcessing = derived(() => !isRecording() && !isTranscribing() && chat.sending);
637
640
  let isSpeaking = derived(() => voiceState.status === "speaking");
638
- $$renderer.push(`<div class="voice-control svelte-1a5q9sh" role="toolbar" aria-label="Voice controls">`);
641
+ $$renderer.push(`<div class="voice-control svelte-7elv0w" role="toolbar" aria-label="Voice controls">`);
639
642
  if (isRecording() && voiceState.interimTranscript) {
640
643
  $$renderer.push("<!--[0-->");
641
- $$renderer.push(`<span class="voice-interim svelte-1a5q9sh" aria-hidden="true"${attr("title", voiceState.interimTranscript)}>${escape_html(voiceState.interimTranscript.length > MAX_INTERIM_CHARS ? voiceState.interimTranscript.slice(0, MAX_INTERIM_CHARS) + "…" : voiceState.interimTranscript)}</span>`);
644
+ $$renderer.push(`<span class="voice-interim svelte-7elv0w" aria-hidden="true"${attr("title", voiceState.interimTranscript)}>${escape_html(voiceState.interimTranscript.length > MAX_INTERIM_CHARS ? voiceState.interimTranscript.slice(0, MAX_INTERIM_CHARS) + "…" : voiceState.interimTranscript)}</span>`);
642
645
  } else $$renderer.push("<!--[-1-->");
643
646
  $$renderer.push(`<!--]--> `);
644
647
  if (voiceState.autoplayBlocked) {
645
648
  $$renderer.push("<!--[0-->");
646
- $$renderer.push(`<button type="button" class="voice-autoplay-banner svelte-1a5q9sh" aria-label="Resume paused audio" title="Audio was blocked by the browser. Click to resume."><svg aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-1a5q9sh"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5" class="svelte-1a5q9sh"></polygon><line x1="23" y1="9" x2="17" y2="15" class="svelte-1a5q9sh"></line><line x1="17" y1="9" x2="23" y2="15" class="svelte-1a5q9sh"></line></svg> <span class="svelte-1a5q9sh">Audio paused — click to resume</span></button>`);
649
+ $$renderer.push(`<button type="button" class="voice-autoplay-banner svelte-7elv0w" aria-label="Resume paused audio" title="Audio was blocked by the browser. Click to resume."><svg aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-7elv0w"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5" class="svelte-7elv0w"></polygon><line x1="23" y1="9" x2="17" y2="15" class="svelte-7elv0w"></line><line x1="17" y1="9" x2="23" y2="15" class="svelte-7elv0w"></line></svg> <span class="svelte-7elv0w">Audio paused — click to resume</span></button>`);
647
650
  } else $$renderer.push("<!--[-1-->");
648
651
  $$renderer.push(`<!--]--> `);
649
652
  if (ttsAvailable()) {
650
653
  $$renderer.push("<!--[0-->");
651
- $$renderer.push(`<button${attr_class("voice-btn svelte-1a5q9sh", void 0, {
654
+ $$renderer.push(`<button${attr_class("voice-btn svelte-7elv0w", void 0, {
652
655
  "voice-btn-on": voiceState.ttsAutoEnabled,
653
656
  "voice-btn-speaking": isSpeaking()
654
- })}${attr("aria-label", voiceState.ttsAutoEnabled ? "Turn off spoken responses" : "Turn on spoken responses")}${attr("aria-pressed", voiceState.ttsAutoEnabled)}${attr("title", isSpeaking() ? "Speaking — click to turn off spoken responses" : voiceState.ttsAutoEnabled ? "Spoken responses are on — click to turn off" : "Spoken responses are off — click to turn on")}><svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-1a5q9sh"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5" class="svelte-1a5q9sh"></polygon>`);
657
+ })}${attr("aria-label", voiceState.ttsAutoEnabled ? "Turn off spoken responses" : "Turn on spoken responses")}${attr("aria-pressed", voiceState.ttsAutoEnabled)}${attr("title", isSpeaking() ? "Speaking — click to turn off spoken responses" : voiceState.ttsAutoEnabled ? "Spoken responses are on — click to turn off" : "Spoken responses are off — click to turn on")}><svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-7elv0w"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5" class="svelte-7elv0w"></polygon>`);
655
658
  if (voiceState.ttsAutoEnabled) {
656
659
  $$renderer.push("<!--[0-->");
657
- $$renderer.push(`<path d="M15.54 8.46a5 5 0 0 1 0 7.07"${attr_class("svelte-1a5q9sh", void 0, { "wave-anim": isSpeaking() })}></path><path d="M19.07 4.93a10 10 0 0 1 0 14.14"${attr_class("svelte-1a5q9sh", void 0, { "wave-anim-2": isSpeaking() })}></path>`);
660
+ $$renderer.push(`<path d="M15.54 8.46a5 5 0 0 1 0 7.07"${attr_class("svelte-7elv0w", void 0, { "wave-anim": isSpeaking() })}></path><path d="M19.07 4.93a10 10 0 0 1 0 14.14"${attr_class("svelte-7elv0w", void 0, { "wave-anim-2": isSpeaking() })}></path>`);
658
661
  } else {
659
662
  $$renderer.push("<!--[-1-->");
660
- $$renderer.push(`<line x1="23" y1="9" x2="17" y2="15" class="svelte-1a5q9sh"></line><line x1="17" y1="9" x2="23" y2="15" class="svelte-1a5q9sh"></line>`);
663
+ $$renderer.push(`<line x1="23" y1="9" x2="17" y2="15" class="svelte-7elv0w"></line><line x1="17" y1="9" x2="23" y2="15" class="svelte-7elv0w"></line>`);
661
664
  }
662
665
  $$renderer.push(`<!--]--></svg></button>`);
663
666
  } else $$renderer.push("<!--[-1-->");
664
- $$renderer.push(`<!--]--> <button${attr_class("voice-btn svelte-1a5q9sh", void 0, {
667
+ $$renderer.push(`<!--]--> <button${attr_class("voice-btn svelte-7elv0w", void 0, {
665
668
  "voice-btn-active": isRecording(),
666
669
  "voice-btn-processing": isProcessing() || isTranscribing(),
667
670
  "voice-btn-disabled": !supported()
668
671
  })}${attr("disabled", !supported() || isProcessing(), true)}${attr("aria-label", !supported() ? "Voice input unavailable" : isRecording() ? "Stop recording" : isTranscribing() ? "Transcribing…" : isProcessing() ? "Sending message…" : "Start recording")}${attr("aria-pressed", isRecording())}${attr("title", !supported() ? "Voice input is unavailable — no speech-to-text engine is configured for this browser" : isRecording() ? "Stop recording" : isTranscribing() ? "Transcribing…" : isProcessing() ? "Sending message…" : "Speak — message will be sent to the selected assistant")}>`);
669
672
  if (!supported()) {
670
673
  $$renderer.push("<!--[0-->");
671
- $$renderer.push(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-1a5q9sh"><line x1="1" y1="1" x2="23" y2="23" class="svelte-1a5q9sh"></line><path d="M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6" class="svelte-1a5q9sh"></path><path d="M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23" class="svelte-1a5q9sh"></path><line x1="12" y1="19" x2="12" y2="23" class="svelte-1a5q9sh"></line><line x1="8" y1="23" x2="16" y2="23" class="svelte-1a5q9sh"></line></svg>`);
674
+ $$renderer.push(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-7elv0w"><line x1="1" y1="1" x2="23" y2="23" class="svelte-7elv0w"></line><path d="M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6" class="svelte-7elv0w"></path><path d="M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23" class="svelte-7elv0w"></path><line x1="12" y1="19" x2="12" y2="23" class="svelte-7elv0w"></line><line x1="8" y1="23" x2="16" y2="23" class="svelte-7elv0w"></line></svg>`);
672
675
  } else if (isTranscribing() || isProcessing()) {
673
676
  $$renderer.push("<!--[1-->");
674
- $$renderer.push(`<span class="voice-spinner svelte-1a5q9sh" aria-hidden="true"></span>`);
677
+ $$renderer.push(`<span class="voice-spinner svelte-7elv0w" aria-hidden="true"></span>`);
675
678
  } else if (isRecording()) {
676
679
  $$renderer.push("<!--[2-->");
677
- $$renderer.push(`<svg aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="currentColor" class="svelte-1a5q9sh"><rect x="6" y="6" width="12" height="12" rx="1.5" class="svelte-1a5q9sh"></rect></svg> <span class="voice-pulse svelte-1a5q9sh" aria-hidden="true"></span>`);
680
+ $$renderer.push(`<svg aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="currentColor" class="svelte-7elv0w"><rect x="6" y="6" width="12" height="12" rx="1.5" class="svelte-7elv0w"></rect></svg> <span class="voice-pulse svelte-7elv0w" aria-hidden="true"></span>`);
678
681
  } else {
679
682
  $$renderer.push("<!--[-1-->");
680
- $$renderer.push(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-1a5q9sh"><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z" class="svelte-1a5q9sh"></path><path d="M19 10v2a7 7 0 0 1-14 0v-2" class="svelte-1a5q9sh"></path><line x1="12" y1="19" x2="12" y2="23" class="svelte-1a5q9sh"></line><line x1="8" y1="23" x2="16" y2="23" class="svelte-1a5q9sh"></line></svg>`);
683
+ $$renderer.push(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-7elv0w"><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z" class="svelte-7elv0w"></path><path d="M19 10v2a7 7 0 0 1-14 0v-2" class="svelte-7elv0w"></path><line x1="12" y1="19" x2="12" y2="23" class="svelte-7elv0w"></line><line x1="8" y1="23" x2="16" y2="23" class="svelte-7elv0w"></line></svg>`);
681
684
  }
682
- $$renderer.push(`<!--]--></button> <span class="sr-only svelte-1a5q9sh" aria-live="polite">${escape_html(isRecording() && voiceState.interimTranscript ? voiceState.interimTranscript : isRecording() ? "Recording" : isTranscribing() ? "Transcribing" : isProcessing() ? "Sending message to assistant" : isSpeaking() ? "Assistant is speaking" : voiceState.ttsAutoEnabled ? "Spoken responses on" : "")}</span></div>`);
685
+ $$renderer.push(`<!--]--></button> <span class="sr-only svelte-7elv0w" aria-live="polite">${escape_html(isRecording() && voiceState.interimTranscript ? voiceState.interimTranscript : isRecording() ? "Recording" : isTranscribing() ? "Transcribing" : isProcessing() ? "Sending message to assistant" : isSpeaking() ? "Assistant is speaking" : voiceState.ttsAutoEnabled ? "Spoken responses on" : "")}</span></div>`);
683
686
  });
684
687
  }
685
688
  //#endregion
686
- //#region src/lib/components/Navbar.svelte
689
+ //#region src/lib/components/chrome/Navbar.svelte
687
690
  function Navbar($$renderer, $$props) {
688
691
  $$renderer.component(($$renderer) => {
689
692
  const pathname = derived(() => page.url?.pathname ?? "");
@@ -698,10 +701,10 @@ function Navbar($$renderer, $$props) {
698
701
  return true;
699
702
  }
700
703
  });
701
- $$renderer.push(`<header class="navbar svelte-rfuq4y"><div class="navbar-inner svelte-rfuq4y"><a class="navbar-brand svelte-rfuq4y" href="/chat" aria-label="OpenPalm — go to chat"><span class="brand-icon svelte-rfuq4y" aria-hidden="true"><img src="/logo-128.png" alt="" class="svelte-rfuq4y"/></span> <span class="brand-text svelte-rfuq4y">OpenPalm</span></a> <div class="navbar-actions svelte-rfuq4y">`);
704
+ $$renderer.push(`<header class="navbar svelte-66bgq1"><div class="navbar-inner svelte-66bgq1"><a class="navbar-brand svelte-66bgq1" href="/chat" aria-label="OpenPalm — go to chat"><span class="brand-icon svelte-66bgq1" aria-hidden="true"><img src="/logo-128.png" alt="" class="svelte-66bgq1"/></span> <span class="brand-text svelte-66bgq1">OpenPalm</span></a> <div class="navbar-actions svelte-66bgq1">`);
702
705
  if (isLocalAssistant()) {
703
706
  $$renderer.push("<!--[0-->");
704
- $$renderer.push(`<a href="/admin"${attr_class("gear-btn svelte-rfuq4y", void 0, { "active": onAdmin() })} aria-label="Settings &amp; administration"${attr("aria-current", onAdmin() ? "page" : void 0)} title="Manage this machine"><svg aria-hidden="true" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-rfuq4y"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg></a>`);
707
+ $$renderer.push(`<a href="/admin"${attr_class("gear-btn svelte-66bgq1", void 0, { "active": onAdmin() })} aria-label="Settings &amp; administration"${attr("aria-current", onAdmin() ? "page" : void 0)} title="Manage this machine"><svg aria-hidden="true" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-66bgq1"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg></a>`);
705
708
  } else $$renderer.push("<!--[-1-->");
706
709
  $$renderer.push(`<!--]--> `);
707
710
  EndpointSwitcher($$renderer);
@@ -715,27 +718,27 @@ function Navbar($$renderer, $$props) {
715
718
  });
716
719
  }
717
720
  //#endregion
718
- //#region src/lib/components/AuthGate.svelte
721
+ //#region src/lib/components/common/AuthGate.svelte
719
722
  function AuthGate($$renderer, $$props) {
720
723
  $$renderer.component(($$renderer) => {
721
724
  let { onSuccess, loading, error } = $$props;
722
725
  let tokenInput = "";
723
- $$renderer.push(`<main class="auth-gate svelte-1vviwqr" aria-label="Admin login gate"><section class="auth-card svelte-1vviwqr"><div class="auth-brand svelte-1vviwqr"><span class="brand-icon svelte-1vviwqr"><img src="/logo-128.png" alt="OpenPalm Logo" class="svelte-1vviwqr"/></span> <div><h1 class="svelte-1vviwqr">OpenPalm Console</h1> <p class="svelte-1vviwqr">Enter your admin password to unlock the control plane.</p></div></div> <form class="auth-form svelte-1vviwqr"><label for="admin-token" class="svelte-1vviwqr">Admin Password</label> <input type="text" name="username" autocomplete="username" value="admin" class="sr-only svelte-1vviwqr" tabindex="-1" aria-hidden="true"/> <div class="token-input-wrapper svelte-1vviwqr"><input id="admin-token" name="admin-token"${attr("type", "password")}${attr("value", tokenInput)} placeholder="Enter admin password" autocomplete="current-password" class="svelte-1vviwqr"/> <button type="button" class="btn-toggle svelte-1vviwqr"${attr("aria-label", "Show token")}>`);
726
+ $$renderer.push(`<main class="auth-gate svelte-zhbyfn" aria-label="Admin login gate"><section class="auth-card svelte-zhbyfn"><div class="auth-brand svelte-zhbyfn"><span class="brand-icon svelte-zhbyfn"><img src="/logo-128.png" alt="OpenPalm Logo" class="svelte-zhbyfn"/></span> <div><h1 class="svelte-zhbyfn">OpenPalm Console</h1> <p class="svelte-zhbyfn">Enter your admin password to unlock the control plane.</p></div></div> <form class="auth-form svelte-zhbyfn"><label for="admin-token" class="svelte-zhbyfn">Admin Password</label> <input type="text" name="username" autocomplete="username" value="admin" class="sr-only svelte-zhbyfn" tabindex="-1" aria-hidden="true"/> <div class="token-input-wrapper svelte-zhbyfn"><input id="admin-token" name="admin-token"${attr("type", "password")}${attr("value", tokenInput)} placeholder="Enter admin password" autocomplete="current-password" class="svelte-zhbyfn"/> <button type="button" class="btn-toggle svelte-zhbyfn"${attr("aria-label", "Show token")}>`);
724
727
  $$renderer.push("<!--[-1-->");
725
728
  $$renderer.push(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>`);
726
729
  $$renderer.push(`<!--]--></button></div> `);
727
730
  if (error) {
728
731
  $$renderer.push("<!--[0-->");
729
- $$renderer.push(`<p class="auth-error svelte-1vviwqr" role="alert">${escape_html(error)}</p>`);
732
+ $$renderer.push(`<p class="auth-error svelte-zhbyfn" role="alert">${escape_html(error)}</p>`);
730
733
  } else $$renderer.push("<!--[-1-->");
731
734
  $$renderer.push(`<!--]--> <button class="btn btn-primary" type="submit"${attr("disabled", loading || !tokenInput.trim(), true)}>`);
732
735
  if (loading) {
733
736
  $$renderer.push("<!--[0-->");
734
- $$renderer.push(`<span class="spinner"></span>`);
737
+ Spinner($$renderer, {});
735
738
  } else $$renderer.push("<!--[-1-->");
736
739
  $$renderer.push(`<!--]--> Unlock Console</button></form></section></main>`);
737
740
  });
738
741
  }
739
742
 
740
743
  export { AuthGate as A, Navbar as N, chat as c, endpointsService as e };
741
- //# sourceMappingURL=AuthGate-C3ZisQbA.js.map
744
+ //# sourceMappingURL=AuthGate-BcB49fE5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthGate-BcB49fE5.js","sources":["../../../.svelte-kit/adapter-node/chunks/AuthGate.js"],"sourcesContent":["import { H as escape_html, V as attr, a as derived, n as attr_class, o as ensure_array_like } from \"./dev.js\";\nimport { n as onDestroy } from \"./index-server.js\";\nimport { A as listSessions, M as sendChatMessage, N as setActiveEndpoint, a as speakText, f as createSession, k as getSessionMessages, n as destroyVoice, o as stopSpeaking, s as voiceState, t as themeService, y as fetchEndpoints } from \"./theme-state.svelte.js\";\nimport { t as page } from \"./state.js\";\nimport { t as Spinner } from \"./Spinner.js\";\n//#region src/lib/components/common/ThemeToggle.svelte\nfunction ThemeToggle($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tconst isDark = derived(() => themeService.resolved === \"dark\");\n\t\tconst label = derived(() => isDark() ? \"Switch to light mode\" : \"Switch to dark mode\");\n\t\t$$renderer.push(`<button type=\"button\" class=\"theme-toggle svelte-1y2534t\"${attr(\"aria-label\", label())}${attr(\"aria-pressed\", isDark())}${attr(\"title\", label())}>`);\n\t\tif (isDark()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"4\"></circle><path d=\"M12 2v2\"></path><path d=\"M12 20v2\"></path><path d=\"m4.93 4.93 1.41 1.41\"></path><path d=\"m17.66 17.66 1.41 1.41\"></path><path d=\"M2 12h2\"></path><path d=\"M20 12h2\"></path><path d=\"m6.34 17.66-1.41 1.41\"></path><path d=\"m19.07 4.93-1.41 1.41\"></path></svg>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9z\"></path></svg>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></button>`);\n\t});\n}\n//#endregion\n//#region src/lib/chat/session-events.ts\nvar INITIAL_BACKOFF_MS = 1e3;\nvar MAX_BACKOFF_MS = 3e4;\nvar STREAM_URL = \"/proxy/assistant/event\";\n/**\n* Parse one `\\n\\n`-delimited SSE frame. Multi-line `data:` fields are\n* concatenated with `\\n` per the SSE spec.\n*/\nfunction parseFrame(chunk) {\n\tconst frame = {};\n\tconst dataLines = [];\n\tfor (const rawLine of chunk.split(\"\\n\")) {\n\t\tif (!rawLine || rawLine.startsWith(\":\")) continue;\n\t\tif (rawLine.startsWith(\"data:\")) dataLines.push(rawLine.replace(/^data:\\s?/, \"\"));\n\t\telse if (rawLine.startsWith(\"event:\")) frame.event = rawLine.replace(/^event:\\s?/, \"\");\n\t\telse if (rawLine.startsWith(\"id:\")) frame.id = rawLine.replace(/^id:\\s?/, \"\");\n\t}\n\tif (dataLines.length > 0) frame.data = dataLines.join(\"\\n\");\n\treturn frame;\n}\nfunction dispatch(handlers, payload) {\n\tconst info = payload.properties?.info;\n\tconst id = info?.id;\n\tif (!id) return;\n\tswitch (payload.type) {\n\t\tcase \"session.created\":\n\t\t\thandlers.onCreated(id);\n\t\t\treturn;\n\t\tcase \"session.updated\":\n\t\t\thandlers.onUpdated(id, {\n\t\t\t\ttitle: info?.title,\n\t\t\t\tupdatedAt: info?.time?.updated\n\t\t\t});\n\t\t\treturn;\n\t\tcase \"session.deleted\":\n\t\t\thandlers.onDeleted(id);\n\t\t\treturn;\n\t\tdefault: return;\n\t}\n}\n/**\n* Open an SSE connection to `/proxy/assistant/event` and dispatch\n* session-scoped events. Returns an unsubscribe function that aborts the\n* stream and prevents reconnection.\n*/\nfunction subscribeSessionEvents(handlers) {\n\tlet stopped = false;\n\tlet controller = new AbortController();\n\tlet lastEventId;\n\tconst sleep = (ms) => new Promise((resolve) => {\n\t\tconst timer = setTimeout(resolve, ms);\n\t\tcontroller.signal.addEventListener(\"abort\", () => {\n\t\t\tclearTimeout(timer);\n\t\t\tresolve();\n\t\t}, { once: true });\n\t});\n\tasync function readStream() {\n\t\tconst headers = { accept: \"text/event-stream\" };\n\t\tif (lastEventId !== void 0) headers[\"Last-Event-ID\"] = lastEventId;\n\t\tconst response = await fetch(STREAM_URL, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders,\n\t\t\tcredentials: \"include\",\n\t\t\tsignal: controller.signal\n\t\t});\n\t\tif (!response.ok || !response.body) throw new Error(`SSE stream failed: ${response.status} ${response.statusText}`);\n\t\thandlers.onConnect?.();\n\t\tconst reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n\t\tlet buffer = \"\";\n\t\ttry {\n\t\t\twhile (true) {\n\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\tif (done) break;\n\t\t\t\tbuffer += value;\n\t\t\t\tconst chunks = buffer.split(\"\\n\\n\");\n\t\t\t\tbuffer = chunks.pop() ?? \"\";\n\t\t\t\tfor (const chunk of chunks) {\n\t\t\t\t\tif (!chunk) continue;\n\t\t\t\t\tconst frame = parseFrame(chunk);\n\t\t\t\t\tif (frame.id !== void 0) lastEventId = frame.id;\n\t\t\t\t\tif (!frame.data) continue;\n\t\t\t\t\tlet payload;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpayload = JSON.parse(frame.data);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconsole.warn(\"[session-events] Bad JSON in SSE frame\", err);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdispatch(handlers, payload);\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\treader.releaseLock();\n\t\t\t} catch {}\n\t\t}\n\t}\n\t(async () => {\n\t\tlet attempt = 0;\n\t\twhile (!stopped) try {\n\t\t\tattempt++;\n\t\t\tawait readStream();\n\t\t\tattempt = 0;\n\t\t\tif (!stopped) await sleep(500);\n\t\t} catch (err) {\n\t\t\tif (stopped) return;\n\t\t\tconst error = err instanceof Error ? err : new Error(String(err));\n\t\t\tif (error.name !== \"AbortError\") {\n\t\t\t\tconsole.warn(\"[session-events] SSE error, reconnecting\", error);\n\t\t\t\thandlers.onDisconnect?.(error);\n\t\t\t}\n\t\t\tawait sleep(Math.min(INITIAL_BACKOFF_MS * 2 ** Math.max(0, attempt - 1), MAX_BACKOFF_MS));\n\t\t\tif (controller.signal.aborted && !stopped) controller = new AbortController();\n\t\t}\n\t})();\n\treturn () => {\n\t\tstopped = true;\n\t\ttry {\n\t\t\tcontroller.abort();\n\t\t} catch {}\n\t};\n}\n//#endregion\n//#region src/lib/chat/chat-state.svelte.ts\nfunction emptyEndpointState() {\n\treturn {\n\t\tsessions: [],\n\t\tsessionsLoaded: false,\n\t\tsessionsLoading: false,\n\t\tsessionsError: \"\",\n\t\tactiveSessionId: null\n\t};\n}\nvar ChatService = class {\n\t/**\n\t* Per-endpoint session cache. Reassigned on every mutation so Svelte 5\n\t* picks up the change. Never mutate the existing Map in place.\n\t*/\n\tbyEndpoint = /* @__PURE__ */ new Map();\n\t/**\n\t* Mirrored from `endpointsService.activeId` via `onEndpointChanged()`\n\t* so the chat layer doesn't have to import the endpoint store.\n\t*/\n\tactiveEndpointId = \"default\";\n\t/** Messages for the currently rendered session only. */\n\tentries = [];\n\tentriesLoading = false;\n\tsending = false;\n\terror = \"\";\n\t/**\n\t* Set true while the SSE event stream is connected. Surfaced by the\n\t* SessionPicker as a tiny green/gray dot so the operator can see at a\n\t* glance whether live updates are flowing.\n\t*/\n\tliveConnected = false;\n\t/**\n\t* Active SSE subscription handle. Reassigned on every endpoint switch.\n\t* Plain field (not `$state`) — only the chat service touches it.\n\t*/\n\t_unsubscribeEvents = null;\n\t#activeSessionId = derived(() => this.byEndpoint.get(this.activeEndpointId)?.activeSessionId ?? null);\n\tget activeSessionId() {\n\t\treturn this.#activeSessionId();\n\t}\n\tset activeSessionId($$value) {\n\t\treturn this.#activeSessionId($$value);\n\t}\n\tsetEndpointState(id, patch) {\n\t\tconst next = {\n\t\t\t...this.byEndpoint.get(id) ?? emptyEndpointState(),\n\t\t\t...patch\n\t\t};\n\t\tthis.byEndpoint = new Map(this.byEndpoint).set(id, next);\n\t\treturn next;\n\t}\n\t/**\n\t* Handle an endpoint switch: load sessions, restore prior or pick\n\t* newest, fetch messages. Mid-generation switches are blocked.\n\t*/\n\tasync onEndpointChanged(id) {\n\t\tif (this.sending) {\n\t\t\tthis.error = \"Wait for the current reply to finish before switching.\";\n\t\t\treturn;\n\t\t}\n\t\tthis.activeEndpointId = id;\n\t\tthis.entries = [];\n\t\tthis.error = \"\";\n\t\tif (!this.byEndpoint.get(id)?.sessionsLoaded) await this.loadSessions();\n\t\tconst state = this.byEndpoint.get(id) ?? emptyEndpointState();\n\t\tconst sessions = state.sessions;\n\t\tconst previous = state.activeSessionId;\n\t\tlet nextSessionId = null;\n\t\tif (previous && sessions.some((s) => s.id === previous)) nextSessionId = previous;\n\t\telse if (sessions.length > 0) nextSessionId = sessions[0].id;\n\t\tif (nextSessionId !== state.activeSessionId) this.setEndpointState(id, { activeSessionId: nextSessionId });\n\t\tif (nextSessionId) await this.openSession(nextSessionId);\n\t\tthis._resubscribeEvents();\n\t}\n\t/**\n\t* Tear down any prior SSE subscription and open a new one. Handlers\n\t* dispatch session.created / updated / deleted into the per-endpoint\n\t* cache, mirroring out-of-band changes (CLI, other clients).\n\t*/\n\t_resubscribeEvents() {\n\t\tif (this._unsubscribeEvents) {\n\t\t\ttry {\n\t\t\t\tthis._unsubscribeEvents();\n\t\t\t} catch (err) {\n\t\t\t\tconsole.warn(\"[chat] failed to unsubscribe from previous event stream\", err);\n\t\t\t}\n\t\t\tthis._unsubscribeEvents = null;\n\t\t}\n\t\tthis.liveConnected = false;\n\t\tthis._unsubscribeEvents = subscribeSessionEvents({\n\t\t\tonCreated: (id) => {\n\t\t\t\tthis._onSessionCreated(id);\n\t\t\t},\n\t\t\tonUpdated: (id, info) => {\n\t\t\t\tthis._onSessionUpdated(id, info);\n\t\t\t},\n\t\t\tonDeleted: (id) => {\n\t\t\t\tthis._onSessionDeleted(id);\n\t\t\t},\n\t\t\tonConnect: () => {\n\t\t\t\tthis.liveConnected = true;\n\t\t\t},\n\t\t\tonDisconnect: () => {\n\t\t\t\tthis.liveConnected = false;\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* A session was created out-of-band — prepend to the active endpoint's\n\t* list if not already known. Do not auto-switch to it: the user owns\n\t* navigation.\n\t*/\n\t_onSessionCreated(sessionId) {\n\t\tconst endpointId = this.activeEndpointId;\n\t\tconst prev = this.byEndpoint.get(endpointId) ?? emptyEndpointState();\n\t\tif (prev.sessions.some((s) => s.id === sessionId)) return;\n\t\tconst now = Date.now();\n\t\tconst summary = {\n\t\t\tid: sessionId,\n\t\t\ttitle: \"\",\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now\n\t\t};\n\t\tthis.setEndpointState(endpointId, {\n\t\t\tsessions: [summary, ...prev.sessions],\n\t\t\tsessionsLoaded: true\n\t\t});\n\t}\n\t/**\n\t* A session was touched out-of-band — patch its updatedAt (and title if\n\t* the event carries one) and re-sort. Do NOT refetch messages: if the\n\t* user is viewing this session, leave the in-memory entries alone for\n\t* v1. A follow-up phase can reconcile message deltas via the assistant\n\t* event stream.\n\t*/\n\t_onSessionUpdated(sessionId, info) {\n\t\tconst endpointId = this.activeEndpointId;\n\t\tconst prev = this.byEndpoint.get(endpointId);\n\t\tif (!prev) return;\n\t\tconst idx = prev.sessions.findIndex((s) => s.id === sessionId);\n\t\tif (idx === -1) return;\n\t\tconst existing = prev.sessions[idx];\n\t\tconst sessions = [{\n\t\t\t...existing,\n\t\t\ttitle: info?.title ?? existing.title,\n\t\t\tupdatedAt: info?.updatedAt ?? Date.now()\n\t\t}, ...prev.sessions.filter((s) => s.id !== sessionId)];\n\t\tsessions.sort((a, b) => b.updatedAt - a.updatedAt);\n\t\tthis.setEndpointState(endpointId, { sessions });\n\t}\n\t/**\n\t* A session was deleted out-of-band. Remove it from the list; if it was\n\t* the active session, fall back to the newest remaining session (or\n\t* null) and reload its messages.\n\t*/\n\tasync _onSessionDeleted(sessionId) {\n\t\tconst endpointId = this.activeEndpointId;\n\t\tconst prev = this.byEndpoint.get(endpointId);\n\t\tif (!prev) return;\n\t\tif (!prev.sessions.some((s) => s.id === sessionId)) return;\n\t\tconst sessions = prev.sessions.filter((s) => s.id !== sessionId);\n\t\tconst wasActive = prev.activeSessionId === sessionId;\n\t\tconst nextActive = wasActive ? sessions[0]?.id ?? null : prev.activeSessionId;\n\t\tthis.setEndpointState(endpointId, {\n\t\t\tsessions,\n\t\t\tactiveSessionId: nextActive\n\t\t});\n\t\tif (wasActive) {\n\t\t\tthis.entries = [];\n\t\t\tif (nextActive) await this.openSession(nextActive);\n\t\t}\n\t}\n\t/** Fetch the session list for the active endpoint. */\n\tasync loadSessions() {\n\t\tconst id = this.activeEndpointId;\n\t\tthis.setEndpointState(id, {\n\t\t\tsessionsLoading: true,\n\t\t\tsessionsError: \"\"\n\t\t});\n\t\ttry {\n\t\t\tconst sessions = await listSessions();\n\t\t\tthis.setEndpointState(id, {\n\t\t\t\tsessions,\n\t\t\t\tsessionsLoaded: true,\n\t\t\t\tsessionsLoading: false,\n\t\t\t\tsessionsError: \"\"\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tconst err = e;\n\t\t\tconst message = err.status === 503 || err.status === 502 ? \"Assistant is not reachable.\" : err.message ?? \"Failed to load sessions.\";\n\t\t\tthis.setEndpointState(id, {\n\t\t\t\tsessionsLoading: false,\n\t\t\t\tsessionsError: message\n\t\t\t});\n\t\t}\n\t}\n\t/** Select a session and render its messages. */\n\tasync openSession(sessionId) {\n\t\tif (this.sending) {\n\t\t\tthis.error = \"Wait for the current reply to finish before switching.\";\n\t\t\treturn;\n\t\t}\n\t\tconst endpointId = this.activeEndpointId;\n\t\tthis.setEndpointState(endpointId, { activeSessionId: sessionId });\n\t\tthis.entries = [];\n\t\tthis.entriesLoading = true;\n\t\tthis.error = \"\";\n\t\ttry {\n\t\t\tconst messages = await getSessionMessages(sessionId);\n\t\t\tif (this.activeEndpointId === endpointId && this.byEndpoint.get(endpointId)?.activeSessionId === sessionId) this.entries = messages;\n\t\t} catch (e) {\n\t\t\tconst err = e;\n\t\t\tif (err.status === 503 || err.status === 502) this.error = \"Assistant is not reachable. Try reconnecting.\";\n\t\t\telse if (err.status === 401) this.error = \"Sign-in required.\";\n\t\t\telse this.error = err.message ?? \"Failed to load messages.\";\n\t\t} finally {\n\t\t\tthis.entriesLoading = false;\n\t\t}\n\t}\n\t/** Create a new session on the active endpoint and select it. */\n\tasync startNewSession() {\n\t\tif (this.sending) {\n\t\t\tthis.error = \"Wait for the current reply to finish before switching.\";\n\t\t\treturn null;\n\t\t}\n\t\tconst endpointId = this.activeEndpointId;\n\t\tthis.error = \"\";\n\t\ttry {\n\t\t\tconst { id } = await createSession();\n\t\t\tconst now = Date.now();\n\t\t\tconst summary = {\n\t\t\t\tid,\n\t\t\t\ttitle: \"\",\n\t\t\t\tcreatedAt: now,\n\t\t\t\tupdatedAt: now\n\t\t\t};\n\t\t\tconst prev = this.byEndpoint.get(endpointId) ?? emptyEndpointState();\n\t\t\tthis.setEndpointState(endpointId, {\n\t\t\t\tsessions: [summary, ...prev.sessions.filter((s) => s.id !== id)],\n\t\t\t\tsessionsLoaded: true,\n\t\t\t\tactiveSessionId: id\n\t\t\t});\n\t\t\tthis.entries = [];\n\t\t\treturn id;\n\t\t} catch (e) {\n\t\t\tconst err = e;\n\t\t\tthis.error = `Failed to start session: ${err.message ?? \"unknown error\"}`;\n\t\t\treturn null;\n\t\t}\n\t}\n\t/**\n\t* Send a message in the active session. If none is active, create one\n\t* first (matches the \"zero sessions\" empty-state flow).\n\t*/\n\tasync send(text) {\n\t\tif (this.sending) return;\n\t\tconst trimmed = text.trim();\n\t\tif (!trimmed) return;\n\t\tlet sessionId = this.activeSessionId;\n\t\tif (!sessionId) {\n\t\t\tsessionId = await this.startNewSession();\n\t\t\tif (!sessionId) return;\n\t\t}\n\t\tconst userEntry = {\n\t\t\tid: crypto.randomUUID(),\n\t\t\trole: \"user\",\n\t\t\ttext: trimmed,\n\t\t\ttimestamp: Date.now()\n\t\t};\n\t\tthis.entries = [...this.entries, userEntry];\n\t\tthis.error = \"\";\n\t\tthis.sending = true;\n\t\ttry {\n\t\t\tconst replyText = (await sendChatMessage(sessionId, trimmed)).parts.filter((p) => p.type === \"text\" && p.text).map((p) => p.text ?? \"\").join(\"\");\n\t\t\tconst assistantEntry = {\n\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\trole: \"assistant\",\n\t\t\t\ttext: replyText || \"(no response)\",\n\t\t\t\ttimestamp: Date.now()\n\t\t\t};\n\t\t\tthis.entries = [...this.entries, assistantEntry];\n\t\t\tconst endpointId = this.activeEndpointId;\n\t\t\tconst prev = this.byEndpoint.get(endpointId);\n\t\t\tif (prev) {\n\t\t\t\tconst now = Date.now();\n\t\t\t\tconst existing = prev.sessions.find((s) => s.id === sessionId);\n\t\t\t\tconst updated = existing ? {\n\t\t\t\t\t...existing,\n\t\t\t\t\tupdatedAt: now\n\t\t\t\t} : {\n\t\t\t\t\tid: sessionId,\n\t\t\t\t\ttitle: \"\",\n\t\t\t\t\tcreatedAt: now,\n\t\t\t\t\tupdatedAt: now\n\t\t\t\t};\n\t\t\t\tconst rest = prev.sessions.filter((s) => s.id !== sessionId);\n\t\t\t\tthis.setEndpointState(endpointId, { sessions: [updated, ...rest] });\n\t\t\t}\n\t\t\tif (voiceState.ttsSupported && voiceState.ttsAutoEnabled && replyText) speakText(replyText);\n\t\t} catch (e) {\n\t\t\tconst err = e;\n\t\t\tif (err.status === 503 || err.status === 502) {\n\t\t\t\tthis.error = \"Assistant is not reachable. Try reconnecting.\";\n\t\t\t\tthis.setEndpointState(this.activeEndpointId, { activeSessionId: null });\n\t\t\t} else if (err.status === 401) this.error = \"Sign-in required.\";\n\t\t\telse this.error = err.message ?? \"Message failed.\";\n\t\t} finally {\n\t\t\tthis.sending = false;\n\t\t}\n\t}\n\treset() {\n\t\tstopSpeaking();\n\t\tthis.entries = [];\n\t\tthis.error = \"\";\n\t\tthis.byEndpoint = /* @__PURE__ */ new Map();\n\t\tif (this._unsubscribeEvents) {\n\t\t\ttry {\n\t\t\t\tthis._unsubscribeEvents();\n\t\t\t} catch (err) {\n\t\t\t\tconsole.warn(\"[chat] failed to unsubscribe from event stream during reset\", err);\n\t\t\t}\n\t\t\tthis._unsubscribeEvents = null;\n\t\t}\n\t\tthis.liveConnected = false;\n\t}\n};\nvar chat = new ChatService();\n//#endregion\n//#region src/lib/endpoints-state.svelte.ts\nvar EndpointsService = class {\n\tendpoints = [];\n\tactiveId = \"default\";\n\tloading = false;\n\tloaded = false;\n\terror = \"\";\n\t#active = derived(() => this.endpoints.find((e) => e.id === this.activeId) ?? this.endpoints[0] ?? null);\n\tget active() {\n\t\treturn this.#active();\n\t}\n\tset active($$value) {\n\t\treturn this.#active($$value);\n\t}\n\tasync load(force = false) {\n\t\tif (this.loading) return;\n\t\tif (this.loaded && !force) return;\n\t\tthis.loading = true;\n\t\tthis.error = \"\";\n\t\ttry {\n\t\t\tconst { endpoints, activeId } = await fetchEndpoints();\n\t\t\tthis.endpoints = endpoints;\n\t\t\tthis.activeId = activeId;\n\t\t\tthis.loaded = true;\n\t\t} catch (e) {\n\t\t\tconst err = e;\n\t\t\tif (err.status !== 401) this.error = err.message ?? \"Failed to load endpoints\";\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t}\n\tasync activate(id) {\n\t\tif (id === this.activeId) return;\n\t\tif (chat.sending) {\n\t\t\tthis.error = \"Wait for the current reply to finish before switching.\";\n\t\t\tthrow new Error(this.error);\n\t\t}\n\t\tconst previous = this.activeId;\n\t\tthis.activeId = id;\n\t\ttry {\n\t\t\tawait setActiveEndpoint(id);\n\t\t\tawait chat.onEndpointChanged(id);\n\t\t} catch (e) {\n\t\t\tthis.activeId = previous;\n\t\t\tconst err = e;\n\t\t\tthis.error = err.message ?? \"Failed to switch endpoint\";\n\t\t\tthrow e;\n\t\t}\n\t}\n};\nvar endpointsService = new EndpointsService();\n//#endregion\n//#region src/lib/components/chat/EndpointSwitcher.svelte\nfunction EndpointSwitcher($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tconst menuId = \"endpoint-menu\";\n\t\tlet switching = false;\n\t\tlet isOpen = false;\n\t\tconst active = derived(() => endpointsService.active);\n\t\tconst endpoints = derived(() => endpointsService.endpoints);\n\t\tconst hasChoices = derived(() => endpoints().length > 1);\n\t\t$$renderer.push(`<div class=\"switcher svelte-48xr05\"><button type=\"button\" class=\"trigger svelte-48xr05\" id=\"endpoint-trigger\"${attr(\"popovertarget\", hasChoices() ? menuId : void 0)} aria-haspopup=\"menu\"${attr(\"aria-expanded\", isOpen)}${attr(\"aria-controls\", menuId)}${attr(\"aria-label\", active() ? `Assistant endpoint: ${active().label}` : \"Assistant endpoints\")}${attr(\"title\", active() ? `Connected to: ${active().label} (${active().url})` : \"Assistant endpoints\")}${attr(\"disabled\", endpointsService.loading, true)}><svg class=\"trigger-icon svelte-48xr05\" aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"2\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\"></rect><rect x=\"2\" y=\"14\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\"></rect><line x1=\"6\" y1=\"6\" x2=\"6.01\" y2=\"6\"></line><line x1=\"6\" y1=\"18\" x2=\"6.01\" y2=\"18\"></line></svg> <span class=\"dot svelte-48xr05\" aria-hidden=\"true\"></span> <span class=\"label svelte-48xr05\">${escape_html(active()?.label ?? \"Endpoint…\")}</span> <span class=\"caret svelte-48xr05\" aria-hidden=\"true\">▾</span></button> <div${attr(\"id\", menuId)} class=\"menu svelte-48xr05\" popover=\"auto\" role=\"menu\" tabindex=\"-1\"><div class=\"menu-header svelte-48xr05\">Assistant endpoint</div> <!--[-->`);\n\t\tconst each_array = ensure_array_like(endpoints());\n\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\tlet ep = each_array[$$index];\n\t\t\t$$renderer.push(`<button type=\"button\"${attr_class(\"menu-item svelte-48xr05\", void 0, { \"active\": ep.id === active()?.id })} role=\"menuitemradio\"${attr(\"aria-checked\", ep.id === active()?.id)}${attr(\"popovertarget\", menuId)} popovertargetaction=\"hide\"${attr(\"disabled\", switching, true)}><span class=\"check svelte-48xr05\" aria-hidden=\"true\">${escape_html(ep.id === active()?.id ? \"●\" : \"○\")}</span> <span class=\"menu-item-text svelte-48xr05\"><span class=\"menu-item-label svelte-48xr05\">${escape_html(ep.label)}</span> <span class=\"menu-item-url svelte-48xr05\">${escape_html(ep.url)}</span></span></button>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--> <div class=\"menu-divider svelte-48xr05\"></div> <a class=\"menu-item link svelte-48xr05\" href=\"/admin/endpoints\" role=\"menuitem\">Manage endpoints…</a></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/chat/SessionPicker.svelte\nfunction SessionPicker($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tconst menuId = \"session-menu\";\n\t\tlet isOpen = false;\n\t\tconst SESSION_LIST_CAP = 50;\n\t\tconst active = derived(() => endpointsService.active);\n\t\tconst endpointState = derived(() => active() ? chat.byEndpoint.get(active().id) ?? null : null);\n\t\tconst sessions = derived(() => endpointState()?.sessions ?? []);\n\t\tconst loading = derived(() => endpointState()?.sessionsLoading ?? false);\n\t\tconst error = derived(() => endpointState()?.sessionsError ?? \"\");\n\t\tconst activeSessionId = derived(() => chat.activeSessionId);\n\t\tconst activeSummary = derived(() => sessions().find((s) => s.id === activeSessionId()) ?? null);\n\t\tconst triggerLabel = derived(() => activeSummary() ? activeSummary().title || `Untitled · ${formatRelative(activeSummary().updatedAt)}` : \"New session\");\n\t\t/**\n\t\t* Live-updates indicator. True when the chat service's SSE stream to\n\t\t* `/proxy/assistant/event` is connected — out-of-band session changes\n\t\t* (CLI, other clients) will flow through. Shown as a tiny dot so the\n\t\t* operator can tell at a glance whether the picker is reactive or\n\t\t* snapshot.\n\t\t*/\n\t\tconst liveConnected = derived(() => chat.liveConnected);\n\t\tconst visibleSessions = derived(() => sessions().slice(0, SESSION_LIST_CAP));\n\t\tconst overflowCount = derived(() => Math.max(0, sessions().length - SESSION_LIST_CAP));\n\t\t/**\n\t\t* Tiny relative-time helper. No date-fns dep — that would be ~30 KB for\n\t\t* 4 cases.\n\t\t*/\n\t\tfunction formatRelative(ts) {\n\t\t\tif (!ts) return \"\";\n\t\t\tconst diffSec = Math.max(0, (Date.now() - ts) / 1e3);\n\t\t\tif (diffSec < 60) return \"just now\";\n\t\t\tconst min = Math.floor(diffSec / 60);\n\t\t\tif (min < 60) return `${min}m ago`;\n\t\t\tconst hr = Math.floor(min / 60);\n\t\t\tif (hr < 24) return `${hr}h ago`;\n\t\t\tconst day = Math.floor(hr / 24);\n\t\t\tif (day === 1) return \"yesterday\";\n\t\t\tif (day < 7) return `${day}d ago`;\n\t\t\tconst wk = Math.floor(day / 7);\n\t\t\tif (wk < 5) return `${wk}w ago`;\n\t\t\tconst mo = Math.floor(day / 30);\n\t\t\tif (mo < 12) return `${mo}mo ago`;\n\t\t\treturn `${Math.floor(day / 365)}y ago`;\n\t\t}\n\t\t$$renderer.push(`<div class=\"picker svelte-cihcnl\"><button type=\"button\" class=\"trigger svelte-cihcnl\" id=\"session-trigger\"${attr(\"popovertarget\", menuId)} aria-haspopup=\"menu\"${attr(\"aria-expanded\", isOpen)}${attr(\"aria-controls\", menuId)} aria-label=\"Sessions\"${attr(\"title\", triggerLabel())}><svg class=\"trigger-icon svelte-cihcnl\" aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 9a2 2 0 0 1-2 2H6l-4 4V4c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2z\"></path><path d=\"M18 9h2a2 2 0 0 1 2 2v11l-4-4h-6a2 2 0 0 1-2-2v-1\"></path></svg> <span${attr_class(\"dot svelte-cihcnl\", void 0, { \"connected\": liveConnected() })} aria-hidden=\"true\"${attr(\"title\", liveConnected() ? \"Live updates connected\" : \"Live updates disconnected\")}></span> <span class=\"label svelte-cihcnl\">${escape_html(triggerLabel())}</span> <span class=\"caret svelte-cihcnl\" aria-hidden=\"true\">▾</span></button> <div${attr(\"id\", menuId)} class=\"menu svelte-cihcnl\" popover=\"auto\" role=\"menu\" tabindex=\"-1\"><div class=\"menu-header svelte-cihcnl\">Sessions on ${escape_html(active()?.label ?? \"this endpoint\")}</div> `);\n\t\tif (chat.sending) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"notice svelte-cihcnl\">Wait for the current reply to finish before switching.</div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <button type=\"button\" class=\"menu-item new-btn svelte-cihcnl\" role=\"menuitem\"${attr(\"popovertarget\", menuId)} popovertargetaction=\"hide\"${attr(\"disabled\", chat.sending, true)}><span class=\"check svelte-cihcnl\" aria-hidden=\"true\">+</span> <span class=\"menu-item-text svelte-cihcnl\"><span class=\"menu-item-label svelte-cihcnl\">New session</span></span></button> <div class=\"menu-divider svelte-cihcnl\"></div> `);\n\t\tif (loading()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"empty svelte-cihcnl\">`);\n\t\t\tSpinner($$renderer, { size: 12 });\n\t\t\t$$renderer.push(`<!----> <span>Loading sessions…</span></div>`);\n\t\t} else if (error()) {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<div class=\"error svelte-cihcnl\"><span class=\"svelte-cihcnl\">${escape_html(error())}</span> <button type=\"button\" class=\"retry-btn svelte-cihcnl\">Retry</button></div>`);\n\t\t} else if (sessions().length === 0) {\n\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t$$renderer.push(`<div class=\"empty svelte-cihcnl\">No sessions yet. Start the first one.</div>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"session-list svelte-cihcnl\" role=\"none\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(visibleSessions());\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet s = each_array[$$index];\n\t\t\t\t$$renderer.push(`<button type=\"button\"${attr_class(\"menu-item session-item svelte-cihcnl\", void 0, { \"active\": s.id === activeSessionId() })} role=\"menuitemradio\"${attr(\"aria-checked\", s.id === activeSessionId())}${attr(\"popovertarget\", menuId)} popovertargetaction=\"hide\"${attr(\"disabled\", chat.sending, true)}><span class=\"check svelte-cihcnl\" aria-hidden=\"true\">${escape_html(s.id === activeSessionId() ? \"●\" : \"○\")}</span> <span class=\"menu-item-text svelte-cihcnl\"><span class=\"menu-item-label svelte-cihcnl\">${escape_html(s.title || \"Untitled\")}</span> <span class=\"menu-item-meta svelte-cihcnl\">${escape_html(formatRelative(s.updatedAt))}</span></span></button>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div> `);\n\t\t\tif (overflowCount() > 0) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<button type=\"button\" class=\"show-all svelte-cihcnl\">Show all (${escape_html(overflowCount())} more)</button>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/chat/VoiceControl.svelte\nfunction VoiceControl($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tconst MAX_INTERIM_CHARS = 48;\n\t\tlet mounted = false;\n\t\tonDestroy(() => {\n\t\t\tdestroyVoice();\n\t\t});\n\t\tlet supported = derived(() => mounted);\n\t\tlet ttsAvailable = derived(() => mounted);\n\t\tlet isRecording = derived(() => voiceState.status === \"recording\");\n\t\tlet isTranscribing = derived(() => voiceState.status === \"transcribing\");\n\t\tlet isProcessing = derived(() => !isRecording() && !isTranscribing() && chat.sending);\n\t\tlet isSpeaking = derived(() => voiceState.status === \"speaking\");\n\t\t$$renderer.push(`<div class=\"voice-control svelte-7elv0w\" role=\"toolbar\" aria-label=\"Voice controls\">`);\n\t\tif (isRecording() && voiceState.interimTranscript) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"voice-interim svelte-7elv0w\" aria-hidden=\"true\"${attr(\"title\", voiceState.interimTranscript)}>${escape_html(voiceState.interimTranscript.length > MAX_INTERIM_CHARS ? voiceState.interimTranscript.slice(0, MAX_INTERIM_CHARS) + \"…\" : voiceState.interimTranscript)}</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (voiceState.autoplayBlocked) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<button type=\"button\" class=\"voice-autoplay-banner svelte-7elv0w\" aria-label=\"Resume paused audio\" title=\"Audio was blocked by the browser. Click to resume.\"><svg aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-7elv0w\"><polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\" class=\"svelte-7elv0w\"></polygon><line x1=\"23\" y1=\"9\" x2=\"17\" y2=\"15\" class=\"svelte-7elv0w\"></line><line x1=\"17\" y1=\"9\" x2=\"23\" y2=\"15\" class=\"svelte-7elv0w\"></line></svg> <span class=\"svelte-7elv0w\">Audio paused — click to resume</span></button>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (ttsAvailable()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<button${attr_class(\"voice-btn svelte-7elv0w\", void 0, {\n\t\t\t\t\"voice-btn-on\": voiceState.ttsAutoEnabled,\n\t\t\t\t\"voice-btn-speaking\": isSpeaking()\n\t\t\t})}${attr(\"aria-label\", voiceState.ttsAutoEnabled ? \"Turn off spoken responses\" : \"Turn on spoken responses\")}${attr(\"aria-pressed\", voiceState.ttsAutoEnabled)}${attr(\"title\", isSpeaking() ? \"Speaking — click to turn off spoken responses\" : voiceState.ttsAutoEnabled ? \"Spoken responses are on — click to turn off\" : \"Spoken responses are off — click to turn on\")}><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-7elv0w\"><polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\" class=\"svelte-7elv0w\"></polygon>`);\n\t\t\tif (voiceState.ttsAutoEnabled) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<path d=\"M15.54 8.46a5 5 0 0 1 0 7.07\"${attr_class(\"svelte-7elv0w\", void 0, { \"wave-anim\": isSpeaking() })}></path><path d=\"M19.07 4.93a10 10 0 0 1 0 14.14\"${attr_class(\"svelte-7elv0w\", void 0, { \"wave-anim-2\": isSpeaking() })}></path>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<line x1=\"23\" y1=\"9\" x2=\"17\" y2=\"15\" class=\"svelte-7elv0w\"></line><line x1=\"17\" y1=\"9\" x2=\"23\" y2=\"15\" class=\"svelte-7elv0w\"></line>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></svg></button>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <button${attr_class(\"voice-btn svelte-7elv0w\", void 0, {\n\t\t\t\"voice-btn-active\": isRecording(),\n\t\t\t\"voice-btn-processing\": isProcessing() || isTranscribing(),\n\t\t\t\"voice-btn-disabled\": !supported()\n\t\t})}${attr(\"disabled\", !supported() || isProcessing(), true)}${attr(\"aria-label\", !supported() ? \"Voice input unavailable\" : isRecording() ? \"Stop recording\" : isTranscribing() ? \"Transcribing…\" : isProcessing() ? \"Sending message…\" : \"Start recording\")}${attr(\"aria-pressed\", isRecording())}${attr(\"title\", !supported() ? \"Voice input is unavailable — no speech-to-text engine is configured for this browser\" : isRecording() ? \"Stop recording\" : isTranscribing() ? \"Transcribing…\" : isProcessing() ? \"Sending message…\" : \"Speak — message will be sent to the selected assistant\")}>`);\n\t\tif (!supported()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-7elv0w\"><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" class=\"svelte-7elv0w\"></line><path d=\"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6\" class=\"svelte-7elv0w\"></path><path d=\"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23\" class=\"svelte-7elv0w\"></path><line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\" class=\"svelte-7elv0w\"></line><line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\" class=\"svelte-7elv0w\"></line></svg>`);\n\t\t} else if (isTranscribing() || isProcessing()) {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<span class=\"voice-spinner svelte-7elv0w\" aria-hidden=\"true\"></span>`);\n\t\t} else if (isRecording()) {\n\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t$$renderer.push(`<svg aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"svelte-7elv0w\"><rect x=\"6\" y=\"6\" width=\"12\" height=\"12\" rx=\"1.5\" class=\"svelte-7elv0w\"></rect></svg> <span class=\"voice-pulse svelte-7elv0w\" aria-hidden=\"true\"></span>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-7elv0w\"><path d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\" class=\"svelte-7elv0w\"></path><path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" class=\"svelte-7elv0w\"></path><line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\" class=\"svelte-7elv0w\"></line><line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\" class=\"svelte-7elv0w\"></line></svg>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></button> <span class=\"sr-only svelte-7elv0w\" aria-live=\"polite\">${escape_html(isRecording() && voiceState.interimTranscript ? voiceState.interimTranscript : isRecording() ? \"Recording\" : isTranscribing() ? \"Transcribing\" : isProcessing() ? \"Sending message to assistant\" : isSpeaking() ? \"Assistant is speaking\" : voiceState.ttsAutoEnabled ? \"Spoken responses on\" : \"\")}</span></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/chrome/Navbar.svelte\nfunction Navbar($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tconst pathname = derived(() => page.url?.pathname ?? \"\");\n\t\tconst onAdmin = derived(() => pathname() === \"/admin\" || pathname().startsWith(\"/admin/\"));\n\t\tconst isLocalAssistant = derived(() => {\n\t\t\tconst url = endpointsService.active?.url ?? \"\";\n\t\t\tif (!url) return true;\n\t\t\ttry {\n\t\t\t\tconst host = new URL(url).hostname;\n\t\t\t\treturn host === \"localhost\" || host === \"127.0.0.1\" || host === \"::1\" || host === \"host.docker.internal\";\n\t\t\t} catch {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t});\n\t\t$$renderer.push(`<header class=\"navbar svelte-66bgq1\"><div class=\"navbar-inner svelte-66bgq1\"><a class=\"navbar-brand svelte-66bgq1\" href=\"/chat\" aria-label=\"OpenPalm — go to chat\"><span class=\"brand-icon svelte-66bgq1\" aria-hidden=\"true\"><img src=\"/logo-128.png\" alt=\"\" class=\"svelte-66bgq1\"/></span> <span class=\"brand-text svelte-66bgq1\">OpenPalm</span></a> <div class=\"navbar-actions svelte-66bgq1\">`);\n\t\tif (isLocalAssistant()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<a href=\"/admin\"${attr_class(\"gear-btn svelte-66bgq1\", void 0, { \"active\": onAdmin() })} aria-label=\"Settings &amp; administration\"${attr(\"aria-current\", onAdmin() ? \"page\" : void 0)} title=\"Manage this machine\"><svg aria-hidden=\"true\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-66bgq1\"><circle cx=\"12\" cy=\"12\" r=\"3\"></circle><path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z\"></path></svg></a>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tEndpointSwitcher($$renderer, {});\n\t\t$$renderer.push(`<!----> `);\n\t\tSessionPicker($$renderer, {});\n\t\t$$renderer.push(`<!----> `);\n\t\tThemeToggle($$renderer, {});\n\t\t$$renderer.push(`<!----> `);\n\t\tVoiceControl($$renderer, {});\n\t\t$$renderer.push(`<!----></div></div></header>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/common/AuthGate.svelte\nfunction AuthGate($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { onSuccess, loading, error } = $$props;\n\t\tlet tokenInput = \"\";\n\t\t$$renderer.push(`<main class=\"auth-gate svelte-zhbyfn\" aria-label=\"Admin login gate\"><section class=\"auth-card svelte-zhbyfn\"><div class=\"auth-brand svelte-zhbyfn\"><span class=\"brand-icon svelte-zhbyfn\"><img src=\"/logo-128.png\" alt=\"OpenPalm Logo\" class=\"svelte-zhbyfn\"/></span> <div><h1 class=\"svelte-zhbyfn\">OpenPalm Console</h1> <p class=\"svelte-zhbyfn\">Enter your admin password to unlock the control plane.</p></div></div> <form class=\"auth-form svelte-zhbyfn\"><label for=\"admin-token\" class=\"svelte-zhbyfn\">Admin Password</label> <input type=\"text\" name=\"username\" autocomplete=\"username\" value=\"admin\" class=\"sr-only svelte-zhbyfn\" tabindex=\"-1\" aria-hidden=\"true\"/> <div class=\"token-input-wrapper svelte-zhbyfn\"><input id=\"admin-token\" name=\"admin-token\"${attr(\"type\", \"password\")}${attr(\"value\", tokenInput)} placeholder=\"Enter admin password\" autocomplete=\"current-password\" class=\"svelte-zhbyfn\"/> <button type=\"button\" class=\"btn-toggle svelte-zhbyfn\"${attr(\"aria-label\", \"Show token\")}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"></path><circle cx=\"12\" cy=\"12\" r=\"3\"></circle></svg>`);\n\t\t$$renderer.push(`<!--]--></button></div> `);\n\t\tif (error) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"auth-error svelte-zhbyfn\" role=\"alert\">${escape_html(error)}</p>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-primary\" type=\"submit\"${attr(\"disabled\", loading || !tokenInput.trim(), true)}>`);\n\t\tif (loading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tSpinner($$renderer, {});\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Unlock Console</button></form></section></main>`);\n\t});\n}\n//#endregion\nexport { chat as i, Navbar as n, endpointsService as r, AuthGate as t };\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { e as attr_class, d as attr, o as derived } from './dev-B6xUe35c.js';
2
+ import { p as page } from './state-CFHLgqLs.js';
3
+
4
+ //#region src/lib/components/chrome/ModeSwitch.svelte
5
+ function ModeSwitch($$renderer, $$props) {
6
+ $$renderer.component(($$renderer) => {
7
+ const pathname = derived(() => page.url?.pathname ?? "");
8
+ const onChat = derived(() => pathname() === "/chat" || pathname().startsWith("/chat/"));
9
+ const onAdvanced = derived(() => pathname() === "/advanced" || pathname().startsWith("/advanced/"));
10
+ $$renderer.push(`<nav class="mode-switch svelte-dn9fn0" aria-label="Chat mode"><a href="/chat"${attr_class("mode-tab svelte-dn9fn0", void 0, { "active": onChat() })}${attr("aria-current", onChat() ? "page" : void 0)}><svg aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-dn9fn0"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg> <span>Chat</span></a> <a href="/advanced"${attr_class("mode-tab svelte-dn9fn0", void 0, { "active": onAdvanced() })}${attr("aria-current", onAdvanced() ? "page" : void 0)}><svg aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-dn9fn0"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><path d="m7 9 3 3-3 3"></path><line x1="13" y1="15" x2="17" y2="15"></line></svg> <span>Advanced</span></a></nav>`);
11
+ });
12
+ }
13
+
14
+ export { ModeSwitch as M };
15
+ //# sourceMappingURL=ModeSwitch-D26evPMy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModeSwitch-D26evPMy.js","sources":["../../../.svelte-kit/adapter-node/chunks/ModeSwitch.js"],"sourcesContent":["import { V as attr, a as derived, n as attr_class } from \"./dev.js\";\nimport { t as page } from \"./state.js\";\n//#region src/lib/components/chrome/ModeSwitch.svelte\nfunction ModeSwitch($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tconst pathname = derived(() => page.url?.pathname ?? \"\");\n\t\tconst onChat = derived(() => pathname() === \"/chat\" || pathname().startsWith(\"/chat/\"));\n\t\tconst onAdvanced = derived(() => pathname() === \"/advanced\" || pathname().startsWith(\"/advanced/\"));\n\t\t$$renderer.push(`<nav class=\"mode-switch svelte-dn9fn0\" aria-label=\"Chat mode\"><a href=\"/chat\"${attr_class(\"mode-tab svelte-dn9fn0\", void 0, { \"active\": onChat() })}${attr(\"aria-current\", onChat() ? \"page\" : void 0)}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-dn9fn0\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"></path></svg> <span>Chat</span></a> <a href=\"/advanced\"${attr_class(\"mode-tab svelte-dn9fn0\", void 0, { \"active\": onAdvanced() })}${attr(\"aria-current\", onAdvanced() ? \"page\" : void 0)}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-dn9fn0\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><path d=\"m7 9 3 3-3 3\"></path><line x1=\"13\" y1=\"15\" x2=\"17\" y2=\"15\"></line></svg> <span>Advanced</span></a></nav>`);\n\t});\n}\n//#endregion\nexport { ModeSwitch as t };\n"],"names":[],"mappings":";;;AAEA;AACA,SAAS,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE;AACzC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK;AACtC,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,QAAQ,IAAI,EAAE,CAAC;AAC1D,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,QAAQ,EAAE,KAAK,OAAO,IAAI,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACzF,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,QAAQ,EAAE,KAAK,WAAW,IAAI,QAAQ,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACrG,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,6EAA6E,EAAE,UAAU,CAAC,wBAAwB,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,2TAA2T,EAAE,UAAU,CAAC,wBAAwB,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,2WAA2W,CAAC,CAAC;AACpgC,CAAC,CAAC,CAAC;AACH;;;;"}
@@ -0,0 +1,12 @@
1
+ import { f as attr_style, d as attr, a8 as stringify } from './dev-B6xUe35c.js';
2
+
3
+ //#region src/lib/components/common/Spinner.svelte
4
+ function Spinner($$renderer, $$props) {
5
+ /** Diameter in px. */
6
+ /** When set, exposes the spinner to assistive tech as a status. */
7
+ let { size = 14, label } = $$props;
8
+ $$renderer.push(`<span class="spinner svelte-1fmz04p"${attr_style(`--spinner-size: ${stringify(size)}px`)}${attr("role", label ? "status" : void 0)}${attr("aria-label", label)}${attr("aria-hidden", label ? void 0 : "true")}></span>`);
9
+ }
10
+
11
+ export { Spinner as S };
12
+ //# sourceMappingURL=Spinner-Bk6e83RX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner-Bk6e83RX.js","sources":["../../../.svelte-kit/adapter-node/chunks/Spinner.js"],"sourcesContent":["import { V as attr, r as attr_style, u as stringify } from \"./dev.js\";\n//#region src/lib/components/common/Spinner.svelte\nfunction Spinner($$renderer, $$props) {\n\t/** Diameter in px. */\n\t/** When set, exposes the spinner to assistive tech as a status. */\n\tlet { size = 14, label } = $$props;\n\t$$renderer.push(`<span class=\"spinner svelte-1fmz04p\"${attr_style(`--spinner-size: ${stringify(size)}px`)}${attr(\"role\", label ? \"status\" : void 0)}${attr(\"aria-label\", label)}${attr(\"aria-hidden\", label ? void 0 : \"true\")}></span>`);\n}\n//#endregion\nexport { Spinner as t };\n"],"names":[],"mappings":";;AACA;AACA,SAAS,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE;AACtC;AACA;AACA,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO;AACnC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,oCAAoC,EAAE,UAAU,CAAC,CAAC,gBAAgB,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC1O;;;;"}