@openpalm/ui 0.11.0-rc.16 → 0.11.0-rc.18

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 (332) hide show
  1. package/build/.openpalm-ui-version +1 -1
  2. package/build/client/_app/immutable/assets/4.CLTnoKrH.css +1 -0
  3. package/build/client/_app/immutable/assets/4.CLTnoKrH.css.br +0 -0
  4. package/build/client/_app/immutable/assets/4.CLTnoKrH.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/{7.c1OWE2A8.css → 7.DKl0e2Fb.css} +1 -1
  6. package/build/client/_app/immutable/assets/7.DKl0e2Fb.css.br +0 -0
  7. package/build/client/_app/immutable/assets/7.DKl0e2Fb.css.gz +0 -0
  8. package/build/client/_app/immutable/assets/8.CY2RMSue.css +1 -0
  9. package/build/client/_app/immutable/assets/8.CY2RMSue.css.br +4 -0
  10. package/build/client/_app/immutable/assets/8.CY2RMSue.css.gz +0 -0
  11. package/build/client/_app/immutable/assets/Navbar.Bnqciy-R.css +1 -0
  12. package/build/client/_app/immutable/assets/Navbar.Bnqciy-R.css.br +0 -0
  13. package/build/client/_app/immutable/assets/Navbar.Bnqciy-R.css.gz +0 -0
  14. package/build/client/_app/immutable/chunks/6MWqMcPj.js +3 -0
  15. package/build/client/_app/immutable/chunks/6MWqMcPj.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/6MWqMcPj.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/BEG6kjxo.js +1 -0
  18. package/build/client/_app/immutable/chunks/BEG6kjxo.js.br +2 -0
  19. package/build/client/_app/immutable/chunks/BEG6kjxo.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/ClJ0e619.js +5 -0
  21. package/build/client/_app/immutable/chunks/ClJ0e619.js.br +0 -0
  22. package/build/client/_app/immutable/chunks/ClJ0e619.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/{BuFlayix.js → CymRgjIC.js} +1 -1
  24. package/build/client/_app/immutable/chunks/CymRgjIC.js.br +0 -0
  25. package/build/client/_app/immutable/chunks/CymRgjIC.js.gz +0 -0
  26. package/build/client/_app/immutable/chunks/{CAubmX5S.js → DQ-_WW-P.js} +1 -1
  27. package/build/client/_app/immutable/chunks/DQ-_WW-P.js.br +0 -0
  28. package/build/client/_app/immutable/chunks/DQ-_WW-P.js.gz +0 -0
  29. package/build/client/_app/immutable/entry/{app.CJNvPvFW.js → app.ZFsJHpgm.js} +2 -2
  30. package/build/client/_app/immutable/entry/app.ZFsJHpgm.js.br +0 -0
  31. package/build/client/_app/immutable/entry/app.ZFsJHpgm.js.gz +0 -0
  32. package/build/client/_app/immutable/entry/start.Bb2Dg17A.js +1 -0
  33. package/build/client/_app/immutable/entry/start.Bb2Dg17A.js.br +0 -0
  34. package/build/client/_app/immutable/entry/start.Bb2Dg17A.js.gz +0 -0
  35. package/build/client/_app/immutable/nodes/{1.PeLinghQ.js → 1.p0a-6xRh.js} +1 -1
  36. package/build/client/_app/immutable/nodes/1.p0a-6xRh.js.br +1 -0
  37. package/build/client/_app/immutable/nodes/1.p0a-6xRh.js.gz +0 -0
  38. package/build/client/_app/immutable/nodes/3.B_FXzjZB.js +1 -0
  39. package/build/client/_app/immutable/nodes/3.B_FXzjZB.js.br +0 -0
  40. package/build/client/_app/immutable/nodes/3.B_FXzjZB.js.gz +0 -0
  41. package/build/client/_app/immutable/nodes/4.DlOTtTTT.js +19 -0
  42. package/build/client/_app/immutable/nodes/4.DlOTtTTT.js.br +0 -0
  43. package/build/client/_app/immutable/nodes/4.DlOTtTTT.js.gz +0 -0
  44. package/build/client/_app/immutable/nodes/5.BERyIpWQ.js +4 -0
  45. package/build/client/_app/immutable/nodes/5.BERyIpWQ.js.br +0 -0
  46. package/build/client/_app/immutable/nodes/5.BERyIpWQ.js.gz +0 -0
  47. package/build/client/_app/immutable/nodes/6.rQVZSkqN.js +1 -0
  48. package/build/client/_app/immutable/nodes/6.rQVZSkqN.js.br +0 -0
  49. package/build/client/_app/immutable/nodes/6.rQVZSkqN.js.gz +0 -0
  50. package/build/client/_app/immutable/nodes/7.C8WhBp0k.js +15 -0
  51. package/build/client/_app/immutable/nodes/7.C8WhBp0k.js.br +0 -0
  52. package/build/client/_app/immutable/nodes/7.C8WhBp0k.js.gz +0 -0
  53. package/build/client/_app/immutable/nodes/8.DmEHzlZO.js +1 -0
  54. package/build/client/_app/immutable/nodes/8.DmEHzlZO.js.br +0 -0
  55. package/build/client/_app/immutable/nodes/8.DmEHzlZO.js.gz +0 -0
  56. package/build/client/_app/version.json +1 -1
  57. package/build/client/_app/version.json.br +1 -1
  58. package/build/client/_app/version.json.gz +0 -0
  59. package/build/server/chunks/{0-CuM5FLbQ.js → 0-CTzT7i_m.js} +2 -2
  60. package/build/server/chunks/{0-CuM5FLbQ.js.map → 0-CTzT7i_m.js.map} +1 -1
  61. package/build/server/chunks/1-BJ6QSHDy.js +9 -0
  62. package/build/server/chunks/{1-igjiofM3.js.map → 1-BJ6QSHDy.js.map} +1 -1
  63. package/build/server/chunks/{3-gylRjzeN.js → 3-COIGgysA.js} +2 -2
  64. package/build/server/chunks/{3-gylRjzeN.js.map → 3-COIGgysA.js.map} +1 -1
  65. package/build/server/chunks/4-p48m7JXw.js +9 -0
  66. package/build/server/chunks/4-p48m7JXw.js.map +1 -0
  67. package/build/server/chunks/5-zn-Jbh7Z.js +9 -0
  68. package/build/server/chunks/5-zn-Jbh7Z.js.map +1 -0
  69. package/build/server/chunks/6-CJxJ9Yeh.js +9 -0
  70. package/build/server/chunks/6-CJxJ9Yeh.js.map +1 -0
  71. package/build/server/chunks/7-BnuUDTsp.js +9 -0
  72. package/build/server/chunks/7-BnuUDTsp.js.map +1 -0
  73. package/build/server/chunks/8-Cko994_N.js +35 -0
  74. package/build/server/chunks/8-Cko994_N.js.map +1 -0
  75. package/build/server/chunks/{8-CmPpxrjv.js → 9-B8DzptsC.js} +4 -4
  76. package/build/server/chunks/{8-CmPpxrjv.js.map → 9-B8DzptsC.js.map} +1 -1
  77. package/build/server/chunks/{AuthGate-CUCB24XJ.js → Navbar-lB4kFS7g.js} +358 -118
  78. package/build/server/chunks/Navbar-lB4kFS7g.js.map +1 -0
  79. package/build/server/chunks/{_layout.svelte-BnCuSUPN.js → _layout.svelte-COQuY-BN.js} +2 -2
  80. package/build/server/chunks/{_layout.svelte-BnCuSUPN.js.map → _layout.svelte-COQuY-BN.js.map} +1 -1
  81. package/build/server/chunks/{_page.svelte-D2EUxxQd.js → _page.svelte-BuUe4hhV.js} +66 -72
  82. package/build/server/chunks/_page.svelte-BuUe4hhV.js.map +1 -0
  83. package/build/server/chunks/_page.svelte-Bv7qRPVj.js +37 -0
  84. package/build/server/chunks/_page.svelte-Bv7qRPVj.js.map +1 -0
  85. package/build/server/chunks/_page.svelte-CVpGxOAl.js +27 -0
  86. package/build/server/chunks/_page.svelte-CVpGxOAl.js.map +1 -0
  87. package/build/server/chunks/_page.svelte-DWCKWYAF.js +70 -0
  88. package/build/server/chunks/_page.svelte-DWCKWYAF.js.map +1 -0
  89. package/build/server/chunks/{_page.svelte-msBK2Ff8.js → _page.svelte-tPiVZDZQ.js} +94 -177
  90. package/build/server/chunks/_page.svelte-tPiVZDZQ.js.map +1 -0
  91. package/build/server/chunks/{_server.ts-C_fNO73y.js → _server.ts-8iOMau6K.js} +8 -8
  92. package/build/server/chunks/{_server.ts-C_fNO73y.js.map → _server.ts-8iOMau6K.js.map} +1 -1
  93. package/build/server/chunks/{_server.ts-DTyZan5L.js → _server.ts-B2RCiGeA.js} +8 -8
  94. package/build/server/chunks/{_server.ts-DTyZan5L.js.map → _server.ts-B2RCiGeA.js.map} +1 -1
  95. package/build/server/chunks/{_server.ts-DMKIHwKi.js → _server.ts-B8sdNvW5.js} +8 -8
  96. package/build/server/chunks/{_server.ts-DMKIHwKi.js.map → _server.ts-B8sdNvW5.js.map} +1 -1
  97. package/build/server/chunks/{_server.ts-CcTt5aAs.js → _server.ts-BAsbrtjL.js} +6 -6
  98. package/build/server/chunks/{_server.ts-CcTt5aAs.js.map → _server.ts-BAsbrtjL.js.map} +1 -1
  99. package/build/server/chunks/{_server.ts-dhkEt2p6.js → _server.ts-BCcQdRne.js} +8 -8
  100. package/build/server/chunks/{_server.ts-dhkEt2p6.js.map → _server.ts-BCcQdRne.js.map} +1 -1
  101. package/build/server/chunks/{_server.ts-Dq82kHyx.js → _server.ts-BD0Jit8e.js} +8 -8
  102. package/build/server/chunks/{_server.ts-Dq82kHyx.js.map → _server.ts-BD0Jit8e.js.map} +1 -1
  103. package/build/server/chunks/{_server.ts-rXhjnBtw.js → _server.ts-BD6Urice.js} +8 -8
  104. package/build/server/chunks/{_server.ts-rXhjnBtw.js.map → _server.ts-BD6Urice.js.map} +1 -1
  105. package/build/server/chunks/{_server.ts-BwHojI4i.js → _server.ts-BG3UvxEU.js} +6 -6
  106. package/build/server/chunks/{_server.ts-BwHojI4i.js.map → _server.ts-BG3UvxEU.js.map} +1 -1
  107. package/build/server/chunks/{_server.ts-Bg8OpPuA.js → _server.ts-BQZSWSLy.js} +9 -9
  108. package/build/server/chunks/{_server.ts-Bg8OpPuA.js.map → _server.ts-BQZSWSLy.js.map} +1 -1
  109. package/build/server/chunks/{_server.ts-B4N5gO26.js → _server.ts-BTGThm9P.js} +8 -8
  110. package/build/server/chunks/{_server.ts-B4N5gO26.js.map → _server.ts-BTGThm9P.js.map} +1 -1
  111. package/build/server/chunks/{_server.ts-fsEmx9mw.js → _server.ts-BVCET3CA.js} +8 -8
  112. package/build/server/chunks/{_server.ts-fsEmx9mw.js.map → _server.ts-BVCET3CA.js.map} +1 -1
  113. package/build/server/chunks/{_server.ts-CMvY0ZDz.js → _server.ts-BVYIqRK2.js} +7 -7
  114. package/build/server/chunks/{_server.ts-CMvY0ZDz.js.map → _server.ts-BVYIqRK2.js.map} +1 -1
  115. package/build/server/chunks/{_server.ts-DqVJ1NqI.js → _server.ts-BYTWLTxk.js} +8 -8
  116. package/build/server/chunks/{_server.ts-DqVJ1NqI.js.map → _server.ts-BYTWLTxk.js.map} +1 -1
  117. package/build/server/chunks/{_server.ts-CSgPjCYv.js → _server.ts-BZ8wMJ7l.js} +8 -8
  118. package/build/server/chunks/{_server.ts-CSgPjCYv.js.map → _server.ts-BZ8wMJ7l.js.map} +1 -1
  119. package/build/server/chunks/{_server.ts-5CjguYY3.js → _server.ts-Ban3zjRc.js} +8 -8
  120. package/build/server/chunks/{_server.ts-5CjguYY3.js.map → _server.ts-Ban3zjRc.js.map} +1 -1
  121. package/build/server/chunks/{_server.ts-DWLkr6Qg.js → _server.ts-BaxB3oQq.js} +8 -8
  122. package/build/server/chunks/{_server.ts-DWLkr6Qg.js.map → _server.ts-BaxB3oQq.js.map} +1 -1
  123. package/build/server/chunks/{_server.ts-DdlF1vjy.js → _server.ts-Bj_nJzpo.js} +8 -8
  124. package/build/server/chunks/{_server.ts-DdlF1vjy.js.map → _server.ts-Bj_nJzpo.js.map} +1 -1
  125. package/build/server/chunks/{_server.ts-wZ88P3nX.js → _server.ts-BkGQezlX.js} +10 -10
  126. package/build/server/chunks/{_server.ts-wZ88P3nX.js.map → _server.ts-BkGQezlX.js.map} +1 -1
  127. package/build/server/chunks/{_server.ts-D2wlMMJl.js → _server.ts-BlMOxGWA.js} +8 -8
  128. package/build/server/chunks/{_server.ts-D2wlMMJl.js.map → _server.ts-BlMOxGWA.js.map} +1 -1
  129. package/build/server/chunks/{_server.ts-Bd_I8GjG.js → _server.ts-BrExNZ-2.js} +8 -8
  130. package/build/server/chunks/{_server.ts-Bd_I8GjG.js.map → _server.ts-BrExNZ-2.js.map} +1 -1
  131. package/build/server/chunks/{_server.ts-b3mVtmkb.js → _server.ts-C1CpbG3_.js} +8 -8
  132. package/build/server/chunks/{_server.ts-b3mVtmkb.js.map → _server.ts-C1CpbG3_.js.map} +1 -1
  133. package/build/server/chunks/{_server.ts-DbO3cg55.js → _server.ts-C44tS0KC.js} +8 -8
  134. package/build/server/chunks/{_server.ts-DbO3cg55.js.map → _server.ts-C44tS0KC.js.map} +1 -1
  135. package/build/server/chunks/{_server.ts-xO4nhxDx.js → _server.ts-C5uu6b2a.js} +8 -8
  136. package/build/server/chunks/{_server.ts-xO4nhxDx.js.map → _server.ts-C5uu6b2a.js.map} +1 -1
  137. package/build/server/chunks/{_server.ts-DnKTcT9x.js → _server.ts-C5wVttUW.js} +7 -7
  138. package/build/server/chunks/{_server.ts-DnKTcT9x.js.map → _server.ts-C5wVttUW.js.map} +1 -1
  139. package/build/server/chunks/{_server.ts-B6FENZO7.js → _server.ts-C7D2sok_.js} +8 -8
  140. package/build/server/chunks/{_server.ts-B6FENZO7.js.map → _server.ts-C7D2sok_.js.map} +1 -1
  141. package/build/server/chunks/{_server.ts-D_dO8hvJ.js → _server.ts-C8YMhHYj.js} +8 -8
  142. package/build/server/chunks/{_server.ts-D_dO8hvJ.js.map → _server.ts-C8YMhHYj.js.map} +1 -1
  143. package/build/server/chunks/{_server.ts-CqHMhINi.js → _server.ts-CC-mpNNj.js} +8 -8
  144. package/build/server/chunks/{_server.ts-CqHMhINi.js.map → _server.ts-CC-mpNNj.js.map} +1 -1
  145. package/build/server/chunks/{_server.ts-CLiYOnOv.js → _server.ts-CG1nihTT.js} +8 -8
  146. package/build/server/chunks/{_server.ts-CLiYOnOv.js.map → _server.ts-CG1nihTT.js.map} +1 -1
  147. package/build/server/chunks/{_server.ts-BaxRyhZ8.js → _server.ts-CH8VLn03.js} +8 -8
  148. package/build/server/chunks/{_server.ts-BaxRyhZ8.js.map → _server.ts-CH8VLn03.js.map} +1 -1
  149. package/build/server/chunks/{_server.ts-CDtOOD3Q.js → _server.ts-COORKWSc.js} +8 -8
  150. package/build/server/chunks/{_server.ts-CDtOOD3Q.js.map → _server.ts-COORKWSc.js.map} +1 -1
  151. package/build/server/chunks/{_server.ts-UF_kxNaU.js → _server.ts-CPzbkayh.js} +8 -8
  152. package/build/server/chunks/{_server.ts-UF_kxNaU.js.map → _server.ts-CPzbkayh.js.map} +1 -1
  153. package/build/server/chunks/{_server.ts-BYdXdnje.js → _server.ts-CQPWD_WN.js} +8 -8
  154. package/build/server/chunks/{_server.ts-BYdXdnje.js.map → _server.ts-CQPWD_WN.js.map} +1 -1
  155. package/build/server/chunks/{_server.ts-Bq2S1OMq.js → _server.ts-CSs35mBJ.js} +8 -8
  156. package/build/server/chunks/{_server.ts-Bq2S1OMq.js.map → _server.ts-CSs35mBJ.js.map} +1 -1
  157. package/build/server/chunks/{_server.ts-CtZuKotA.js → _server.ts-CsUi6NWt.js} +31 -8
  158. package/build/server/chunks/_server.ts-CsUi6NWt.js.map +1 -0
  159. package/build/server/chunks/{_server.ts-I0iKpsyr.js → _server.ts-Cw2YXWgK.js} +9 -9
  160. package/build/server/chunks/{_server.ts-I0iKpsyr.js.map → _server.ts-Cw2YXWgK.js.map} +1 -1
  161. package/build/server/chunks/{_server.ts-CfLbEufw.js → _server.ts-D0FZ3wh5.js} +8 -8
  162. package/build/server/chunks/{_server.ts-CfLbEufw.js.map → _server.ts-D0FZ3wh5.js.map} +1 -1
  163. package/build/server/chunks/{_server.ts-eK_9jY-9.js → _server.ts-D4zkfcxH.js} +8 -8
  164. package/build/server/chunks/{_server.ts-eK_9jY-9.js.map → _server.ts-D4zkfcxH.js.map} +1 -1
  165. package/build/server/chunks/{_server.ts-DmyOp1yq.js → _server.ts-D5Q5mczv.js} +8 -8
  166. package/build/server/chunks/{_server.ts-DmyOp1yq.js.map → _server.ts-D5Q5mczv.js.map} +1 -1
  167. package/build/server/chunks/{_server.ts-P4pmd9NX.js → _server.ts-D9HJ0cWI.js} +8 -8
  168. package/build/server/chunks/{_server.ts-P4pmd9NX.js.map → _server.ts-D9HJ0cWI.js.map} +1 -1
  169. package/build/server/chunks/{_server.ts-C1y3X6iK.js → _server.ts-DAb50kOu.js} +9 -9
  170. package/build/server/chunks/{_server.ts-C1y3X6iK.js.map → _server.ts-DAb50kOu.js.map} +1 -1
  171. package/build/server/chunks/{_server.ts-Bdry_CdG.js → _server.ts-DFL8Mq_R.js} +8 -8
  172. package/build/server/chunks/{_server.ts-Bdry_CdG.js.map → _server.ts-DFL8Mq_R.js.map} +1 -1
  173. package/build/server/chunks/{_server.ts-BmZlEy27.js → _server.ts-DLHN_6MC.js} +8 -8
  174. package/build/server/chunks/{_server.ts-BmZlEy27.js.map → _server.ts-DLHN_6MC.js.map} +1 -1
  175. package/build/server/chunks/{_server.ts-BclZ3UFT.js → _server.ts-DQE5fd19.js} +8 -8
  176. package/build/server/chunks/{_server.ts-BclZ3UFT.js.map → _server.ts-DQE5fd19.js.map} +1 -1
  177. package/build/server/chunks/{_server.ts-BR9OrjcE.js → _server.ts-DQcL5wr_.js} +8 -8
  178. package/build/server/chunks/{_server.ts-BR9OrjcE.js.map → _server.ts-DQcL5wr_.js.map} +1 -1
  179. package/build/server/chunks/{_server.ts-C1DcK_rP.js → _server.ts-DRxZJQd6.js} +10 -10
  180. package/build/server/chunks/{_server.ts-C1DcK_rP.js.map → _server.ts-DRxZJQd6.js.map} +1 -1
  181. package/build/server/chunks/{_server.ts-DVekHgMN.js → _server.ts-DXOh4EZe.js} +9 -9
  182. package/build/server/chunks/{_server.ts-DVekHgMN.js.map → _server.ts-DXOh4EZe.js.map} +1 -1
  183. package/build/server/chunks/{_server.ts-De7IOs2z.js → _server.ts-DbMkM72G.js} +7 -7
  184. package/build/server/chunks/{_server.ts-De7IOs2z.js.map → _server.ts-DbMkM72G.js.map} +1 -1
  185. package/build/server/chunks/{_server.ts-yimewsjO.js → _server.ts-DcQTtmS3.js} +8 -8
  186. package/build/server/chunks/{_server.ts-yimewsjO.js.map → _server.ts-DcQTtmS3.js.map} +1 -1
  187. package/build/server/chunks/{_server.ts-otJRaSSq.js → _server.ts-DgIgXukK.js} +9 -9
  188. package/build/server/chunks/{_server.ts-otJRaSSq.js.map → _server.ts-DgIgXukK.js.map} +1 -1
  189. package/build/server/chunks/{_server.ts-CAKTZL2t.js → _server.ts-DjlikYHH.js} +9 -9
  190. package/build/server/chunks/{_server.ts-CAKTZL2t.js.map → _server.ts-DjlikYHH.js.map} +1 -1
  191. package/build/server/chunks/{_server.ts-l4CK3c4j.js → _server.ts-DjnK1iz8.js} +8 -8
  192. package/build/server/chunks/{_server.ts-l4CK3c4j.js.map → _server.ts-DjnK1iz8.js.map} +1 -1
  193. package/build/server/chunks/{_server.ts-B3tjtq2m.js → _server.ts-DrM8VAOS.js} +8 -8
  194. package/build/server/chunks/{_server.ts-B3tjtq2m.js.map → _server.ts-DrM8VAOS.js.map} +1 -1
  195. package/build/server/chunks/{_server.ts-EZS5Qan4.js → _server.ts-DtC0SjIr.js} +8 -8
  196. package/build/server/chunks/{_server.ts-EZS5Qan4.js.map → _server.ts-DtC0SjIr.js.map} +1 -1
  197. package/build/server/chunks/{_server.ts-B8JtVHLy.js → _server.ts-DuBJyo4e.js} +8 -8
  198. package/build/server/chunks/{_server.ts-B8JtVHLy.js.map → _server.ts-DuBJyo4e.js.map} +1 -1
  199. package/build/server/chunks/{_server.ts-C-lN2ZUO.js → _server.ts-EBySP1Ew.js} +6 -6
  200. package/build/server/chunks/{_server.ts-C-lN2ZUO.js.map → _server.ts-EBySP1Ew.js.map} +1 -1
  201. package/build/server/chunks/{_server.ts-CLBKpKeH.js → _server.ts-IkgMCbAi.js} +10 -10
  202. package/build/server/chunks/{_server.ts-CLBKpKeH.js.map → _server.ts-IkgMCbAi.js.map} +1 -1
  203. package/build/server/chunks/{_server.ts-Bl0YOh50.js → _server.ts-Me1rXUGo.js} +8 -8
  204. package/build/server/chunks/{_server.ts-Bl0YOh50.js.map → _server.ts-Me1rXUGo.js.map} +1 -1
  205. package/build/server/chunks/{_server.ts-BjrO7pvn.js → _server.ts-Mycnkmlz.js} +9 -9
  206. package/build/server/chunks/{_server.ts-BjrO7pvn.js.map → _server.ts-Mycnkmlz.js.map} +1 -1
  207. package/build/server/chunks/{_server.ts-CrU9r7-F.js → _server.ts-N6WIc0vw.js} +8 -8
  208. package/build/server/chunks/{_server.ts-CrU9r7-F.js.map → _server.ts-N6WIc0vw.js.map} +1 -1
  209. package/build/server/chunks/{_server.ts-CJL8da0o.js → _server.ts-XOLGzzNk.js} +8 -8
  210. package/build/server/chunks/{_server.ts-CJL8da0o.js.map → _server.ts-XOLGzzNk.js.map} +1 -1
  211. package/build/server/chunks/{_server.ts-C5s-OXCm.js → _server.ts-ZE9PYnxj.js} +8 -8
  212. package/build/server/chunks/{_server.ts-C5s-OXCm.js.map → _server.ts-ZE9PYnxj.js.map} +1 -1
  213. package/build/server/chunks/{_server.ts-D-sjM5kn.js → _server.ts-__xVWUvt.js} +8 -8
  214. package/build/server/chunks/{_server.ts-D-sjM5kn.js.map → _server.ts-__xVWUvt.js.map} +1 -1
  215. package/build/server/chunks/{_server.ts-DzWtvjem.js → _server.ts-_o3Yebl6.js} +8 -8
  216. package/build/server/chunks/{_server.ts-DzWtvjem.js.map → _server.ts-_o3Yebl6.js.map} +1 -1
  217. package/build/server/chunks/{_server.ts-CQqURrHY.js → _server.ts-ccd1enMp.js} +8 -8
  218. package/build/server/chunks/{_server.ts-CQqURrHY.js.map → _server.ts-ccd1enMp.js.map} +1 -1
  219. package/build/server/chunks/{_server.ts-DWN6TJv0.js → _server.ts-iAOP7FW1.js} +5 -5
  220. package/build/server/chunks/{_server.ts-DWN6TJv0.js.map → _server.ts-iAOP7FW1.js.map} +1 -1
  221. package/build/server/chunks/{_server.ts-CG409cWi.js → _server.ts-l3A6IOvJ.js} +8 -8
  222. package/build/server/chunks/{_server.ts-CG409cWi.js.map → _server.ts-l3A6IOvJ.js.map} +1 -1
  223. package/build/server/chunks/{_server.ts-BkoJOqrr.js → _server.ts-pLeJl6U2.js} +7 -7
  224. package/build/server/chunks/{_server.ts-BkoJOqrr.js.map → _server.ts-pLeJl6U2.js.map} +1 -1
  225. package/build/server/chunks/{_server.ts-Da9y6lio.js → _server.ts-sEc4S_v5.js} +10 -10
  226. package/build/server/chunks/{_server.ts-Da9y6lio.js.map → _server.ts-sEc4S_v5.js.map} +1 -1
  227. package/build/server/chunks/{_server.ts-DclRsTpW.js → _server.ts-vp9n_72N.js} +8 -8
  228. package/build/server/chunks/{_server.ts-DclRsTpW.js.map → _server.ts-vp9n_72N.js.map} +1 -1
  229. package/build/server/chunks/{_server.ts-D7L27_xI.js → _server.ts-ypkZ9bJf.js} +5 -5
  230. package/build/server/chunks/{_server.ts-D7L27_xI.js.map → _server.ts-ypkZ9bJf.js.map} +1 -1
  231. package/build/server/chunks/{addon-helpers-BpnH-GEc.js → addon-helpers-B0E6L7iO.js} +2 -2
  232. package/build/server/chunks/{addon-helpers-BpnH-GEc.js.map → addon-helpers-B0E6L7iO.js.map} +1 -1
  233. package/build/server/chunks/{state-C2hkWBTS.js → client-BoEGJzYk.js} +18 -54
  234. package/build/server/chunks/client-BoEGJzYk.js.map +1 -0
  235. package/build/server/chunks/{config-0LFudKuE.js → config-2pnPob92.js} +2 -2
  236. package/build/server/chunks/{config-0LFudKuE.js.map → config-2pnPob92.js.map} +1 -1
  237. package/build/server/chunks/{docker-B23w4kr6.js → docker-D17EjIlp.js} +2 -2
  238. package/build/server/chunks/{docker-B23w4kr6.js.map → docker-D17EjIlp.js.map} +1 -1
  239. package/build/server/chunks/{endpoints-Drq_J-2Z.js → endpoints-DoIeO5WL.js} +2 -2
  240. package/build/server/chunks/{endpoints-Drq_J-2Z.js.map → endpoints-DoIeO5WL.js.map} +1 -1
  241. package/build/server/chunks/{environment-Dg_p6tVG.js → environment-B033HICs.js} +2 -2
  242. package/build/server/chunks/{environment-Dg_p6tVG.js.map → environment-B033HICs.js.map} +1 -1
  243. package/build/server/chunks/{error.svelte-CwLepqCx.js → error.svelte-BZj_44PV.js} +5 -4
  244. package/build/server/chunks/{error.svelte-CwLepqCx.js.map → error.svelte-BZj_44PV.js.map} +1 -1
  245. package/build/server/chunks/{helpers-CX6xRBmt.js → helpers-CeQwqpAT.js} +14 -4
  246. package/build/server/chunks/helpers-CeQwqpAT.js.map +1 -0
  247. package/build/server/chunks/{hooks.server-BEVMYNQ4.js → hooks.server-2io-2N7D.js} +14 -8
  248. package/build/server/chunks/hooks.server-2io-2N7D.js.map +1 -0
  249. package/build/server/chunks/{http-VqOG8hyj.js → http-CHmjTVGA.js} +2 -2
  250. package/build/server/chunks/{http-VqOG8hyj.js.map → http-CHmjTVGA.js.map} +1 -1
  251. package/build/server/chunks/{internal-Cp3QkP7z.js → internal-XQrKrAX-.js} +3 -3
  252. package/build/server/chunks/{internal-Cp3QkP7z.js.map → internal-XQrKrAX-.js.map} +1 -1
  253. package/build/server/chunks/{setup-deploy-B4oSSFYi.js → setup-deploy-53S0fflh.js} +2 -2
  254. package/build/server/chunks/{setup-deploy-B4oSSFYi.js.map → setup-deploy-53S0fflh.js.map} +1 -1
  255. package/build/server/chunks/{src-BkvQ5Uuf.js → src-D9YnoOnU.js} +3793 -3438
  256. package/build/server/chunks/src-D9YnoOnU.js.map +1 -0
  257. package/build/server/chunks/state-C0rbnIhQ.js +62 -0
  258. package/build/server/chunks/state-C0rbnIhQ.js.map +1 -0
  259. package/build/server/chunks/{theme-state.svelte-CWo8vi7P.js → theme-state.svelte-CE13yM0n.js} +3 -28
  260. package/build/server/chunks/theme-state.svelte-CE13yM0n.js.map +1 -0
  261. package/build/server/index.js +2 -2
  262. package/build/server/manifest.js +88 -80
  263. package/build/server/manifest.js.map +1 -1
  264. package/package.json +2 -2
  265. package/build/client/_app/immutable/assets/4.Cztzqv5R.css +0 -1
  266. package/build/client/_app/immutable/assets/4.Cztzqv5R.css.br +0 -0
  267. package/build/client/_app/immutable/assets/4.Cztzqv5R.css.gz +0 -0
  268. package/build/client/_app/immutable/assets/7.c1OWE2A8.css.br +0 -0
  269. package/build/client/_app/immutable/assets/7.c1OWE2A8.css.gz +0 -0
  270. package/build/client/_app/immutable/assets/AuthGate.DfqHSVDp.css +0 -1
  271. package/build/client/_app/immutable/assets/AuthGate.DfqHSVDp.css.br +0 -0
  272. package/build/client/_app/immutable/assets/AuthGate.DfqHSVDp.css.gz +0 -0
  273. package/build/client/_app/immutable/chunks/BSMdfeMN.js +0 -1
  274. package/build/client/_app/immutable/chunks/BSMdfeMN.js.br +0 -0
  275. package/build/client/_app/immutable/chunks/BSMdfeMN.js.gz +0 -0
  276. package/build/client/_app/immutable/chunks/BjEia4SW.js +0 -5
  277. package/build/client/_app/immutable/chunks/BjEia4SW.js.br +0 -0
  278. package/build/client/_app/immutable/chunks/BjEia4SW.js.gz +0 -0
  279. package/build/client/_app/immutable/chunks/BuFlayix.js.br +0 -0
  280. package/build/client/_app/immutable/chunks/BuFlayix.js.gz +0 -0
  281. package/build/client/_app/immutable/chunks/CAubmX5S.js.br +0 -0
  282. package/build/client/_app/immutable/chunks/CAubmX5S.js.gz +0 -0
  283. package/build/client/_app/immutable/entry/app.CJNvPvFW.js.br +0 -0
  284. package/build/client/_app/immutable/entry/app.CJNvPvFW.js.gz +0 -0
  285. package/build/client/_app/immutable/entry/start.DwmqlUlw.js +0 -1
  286. package/build/client/_app/immutable/entry/start.DwmqlUlw.js.br +0 -0
  287. package/build/client/_app/immutable/entry/start.DwmqlUlw.js.gz +0 -0
  288. package/build/client/_app/immutable/nodes/1.PeLinghQ.js.br +0 -0
  289. package/build/client/_app/immutable/nodes/1.PeLinghQ.js.gz +0 -0
  290. package/build/client/_app/immutable/nodes/3.DHPuQEyR.js +0 -1
  291. package/build/client/_app/immutable/nodes/3.DHPuQEyR.js.br +0 -0
  292. package/build/client/_app/immutable/nodes/3.DHPuQEyR.js.gz +0 -0
  293. package/build/client/_app/immutable/nodes/4.COvuzhaR.js +0 -19
  294. package/build/client/_app/immutable/nodes/4.COvuzhaR.js.br +0 -0
  295. package/build/client/_app/immutable/nodes/4.COvuzhaR.js.gz +0 -0
  296. package/build/client/_app/immutable/nodes/5.CwQtqrUQ.js +0 -4
  297. package/build/client/_app/immutable/nodes/5.CwQtqrUQ.js.br +0 -0
  298. package/build/client/_app/immutable/nodes/5.CwQtqrUQ.js.gz +0 -0
  299. package/build/client/_app/immutable/nodes/6.C5VVUmgG.js +0 -1
  300. package/build/client/_app/immutable/nodes/6.C5VVUmgG.js.br +0 -0
  301. package/build/client/_app/immutable/nodes/6.C5VVUmgG.js.gz +0 -0
  302. package/build/client/_app/immutable/nodes/7.1EAyMveL.js +0 -15
  303. package/build/client/_app/immutable/nodes/7.1EAyMveL.js.br +0 -0
  304. package/build/client/_app/immutable/nodes/7.1EAyMveL.js.gz +0 -0
  305. package/build/server/chunks/1-igjiofM3.js +0 -9
  306. package/build/server/chunks/4-C2Mmtu1u.js +0 -9
  307. package/build/server/chunks/4-C2Mmtu1u.js.map +0 -1
  308. package/build/server/chunks/5-ohTh1gNU.js +0 -9
  309. package/build/server/chunks/5-ohTh1gNU.js.map +0 -1
  310. package/build/server/chunks/6-CZ1tE6rz.js +0 -9
  311. package/build/server/chunks/6-CZ1tE6rz.js.map +0 -1
  312. package/build/server/chunks/7-CI-hsKrQ.js +0 -9
  313. package/build/server/chunks/7-CI-hsKrQ.js.map +0 -1
  314. package/build/server/chunks/AuthGate-CUCB24XJ.js.map +0 -1
  315. package/build/server/chunks/_page.svelte-D2EUxxQd.js.map +0 -1
  316. package/build/server/chunks/_page.svelte-IYpnCiW7.js +0 -107
  317. package/build/server/chunks/_page.svelte-IYpnCiW7.js.map +0 -1
  318. package/build/server/chunks/_page.svelte-msBK2Ff8.js.map +0 -1
  319. package/build/server/chunks/_page.svelte-waB4Hz3U.js +0 -67
  320. package/build/server/chunks/_page.svelte-waB4Hz3U.js.map +0 -1
  321. package/build/server/chunks/_server.ts-CtZuKotA.js.map +0 -1
  322. package/build/server/chunks/helpers-CX6xRBmt.js.map +0 -1
  323. package/build/server/chunks/hooks.server-BEVMYNQ4.js.map +0 -1
  324. package/build/server/chunks/src-BkvQ5Uuf.js.map +0 -1
  325. package/build/server/chunks/state-C2hkWBTS.js.map +0 -1
  326. package/build/server/chunks/theme-state.svelte-CWo8vi7P.js.map +0 -1
  327. /package/build/client/_app/immutable/assets/{8.cpz_TytB.css → 9.cpz_TytB.css} +0 -0
  328. /package/build/client/_app/immutable/assets/{8.cpz_TytB.css.br → 9.cpz_TytB.css.br} +0 -0
  329. /package/build/client/_app/immutable/assets/{8.cpz_TytB.css.gz → 9.cpz_TytB.css.gz} +0 -0
  330. /package/build/client/_app/immutable/nodes/{8.2jRmEBBC.js → 9.C1MP3zci.js} +0 -0
  331. /package/build/client/_app/immutable/nodes/{8.2jRmEBBC.js.br → 9.C1MP3zci.js.br} +0 -0
  332. /package/build/client/_app/immutable/nodes/{8.2jRmEBBC.js.gz → 9.C1MP3zci.js.gz} +0 -0
@@ -1,31 +1,219 @@
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-C2hkWBTS.js';
3
- import { g as fetchEndpoints, p as setActiveEndpoint, n as listSessions, m as getSessionMessages, c as createSession, s as sendChatMessage, w as voiceState, r as speakText, t as stopSpeaking, d as destroyVoice, u as themeService } from './theme-state.svelte-CWo8vi7P.js';
1
+ import { o as derived, r as escape_html, p as ensure_array_like, e as attr_class, d as attr, a8 as stringify, f as attr_style } from './dev-B6xUe35c.js';
2
+ import { o as onDestroy, g as goto } from './client-BoEGJzYk.js';
3
+ import { g as fetchEndpoints, m as setActiveEndpoint, l as listSessions, k 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-CE13yM0n.js';
4
+ import { p as page } from './state-C0rbnIhQ.js';
4
5
  import { S as Spinner } from './Spinner-Bk6e83RX.js';
5
6
 
6
- //#region src/lib/components/common/ThemeToggle.svelte
7
- function ThemeToggle($$renderer, $$props) {
8
- $$renderer.component(($$renderer) => {
9
- const isDark = derived(() => themeService.resolved === "dark");
10
- const label = derived(() => isDark() ? "Switch to light mode" : "Switch to dark mode");
11
- $$renderer.push(`<button type="button" class="theme-toggle svelte-1y2534t"${attr("aria-label", label())}${attr("aria-pressed", isDark())}${attr("title", label())}>`);
12
- if (isDark()) {
7
+ //#region src/lib/format-date.ts
8
+ var TIME_FMT = new Intl.DateTimeFormat(void 0, {
9
+ hour: "numeric",
10
+ minute: "2-digit"
11
+ });
12
+ var DATE_TIME_FMT = new Intl.DateTimeFormat(void 0, {
13
+ year: "numeric",
14
+ month: "short",
15
+ day: "numeric",
16
+ hour: "numeric",
17
+ minute: "2-digit"
18
+ });
19
+ /** Time of day, e.g. "3:42 PM" (locale-aware). Empty string for a falsy input. */
20
+ function formatTime(ts) {
21
+ if (!ts) return "";
22
+ return TIME_FMT.format(ts);
23
+ }
24
+ /**
25
+ * Absolute date + time, e.g. "Jun 7, 2026, 3:42 PM". Use for tooltips / full
26
+ * context where a relative label alone is ambiguous. Empty for a falsy input.
27
+ */
28
+ function formatDateTime(ts) {
29
+ if (!ts) return "";
30
+ return DATE_TIME_FMT.format(ts);
31
+ }
32
+ /**
33
+ * Compact relative time, e.g. "just now", "5m ago", "yesterday", "3w ago".
34
+ * Empty string for a falsy input. No date-fns dependency — that would be ~30 KB
35
+ * for these few cases.
36
+ */
37
+ function formatRelativeTime(ts) {
38
+ if (!ts) return "";
39
+ const diffSec = Math.max(0, (Date.now() - ts) / 1e3);
40
+ if (diffSec < 60) return "just now";
41
+ const min = Math.floor(diffSec / 60);
42
+ if (min < 60) return `${min}m ago`;
43
+ const hr = Math.floor(min / 60);
44
+ if (hr < 24) return `${hr}h ago`;
45
+ const day = Math.floor(hr / 24);
46
+ if (day === 1) return "yesterday";
47
+ if (day < 7) return `${day}d ago`;
48
+ const wk = Math.floor(day / 7);
49
+ if (wk < 5) return `${wk}w ago`;
50
+ const mo = Math.floor(day / 30);
51
+ if (mo < 12) return `${mo}mo ago`;
52
+ return `${Math.floor(day / 365)}y ago`;
53
+ }
54
+ //#endregion
55
+ //#region src/lib/components/common/IconButton.svelte
56
+ function IconButton($$renderer, $$props) {
57
+ /** Icon contents (an inline <svg> or spinner). */
58
+ /** Optional visible label; when present the button grows from a square to a pill. */
59
+ /** Render as an anchor instead of a button when a destination is given. */
60
+ /** "On"/active look (used by ToggleButton and active states). */
61
+ /** Colour of the selected state. */
62
+ /** Mirrors the toggle state for assistive tech (set by ToggleButton). */
63
+ let { icon, label, title, ariaLabel, disabled = false, href, onclick, type = "button", selected = false, tone = "primary", ariaPressed } = $$props;
64
+ if (href) {
65
+ $$renderer.push("<!--[0-->");
66
+ $$renderer.push(`<a${attr_class("icon-btn svelte-vx1yib", void 0, {
67
+ "has-label": label,
68
+ "selected": selected,
69
+ "tone-danger": tone === "danger"
70
+ })}${attr("href", href)}${attr("title", title ?? ariaLabel ?? label)}${attr("aria-label", ariaLabel ?? label)}${attr("aria-disabled", disabled || void 0)}>`);
71
+ icon($$renderer);
72
+ $$renderer.push(`<!----> `);
73
+ if (label) {
13
74
  $$renderer.push("<!--[0-->");
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>`);
15
- } else {
16
- $$renderer.push("<!--[-1-->");
17
- $$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>`);
18
- }
75
+ $$renderer.push(`<span class="icon-btn-label svelte-vx1yib">${escape_html(label)}</span>`);
76
+ } else $$renderer.push("<!--[-1-->");
77
+ $$renderer.push(`<!--]--></a>`);
78
+ } else {
79
+ $$renderer.push("<!--[-1-->");
80
+ $$renderer.push(`<button${attr_class("icon-btn svelte-vx1yib", void 0, {
81
+ "has-label": label,
82
+ "selected": selected,
83
+ "tone-danger": tone === "danger"
84
+ })}${attr("type", type)}${attr("disabled", disabled, true)}${attr("title", title ?? ariaLabel ?? label)}${attr("aria-label", ariaLabel ?? label)}${attr("aria-pressed", ariaPressed)}>`);
85
+ icon($$renderer);
86
+ $$renderer.push(`<!----> `);
87
+ if (label) {
88
+ $$renderer.push("<!--[0-->");
89
+ $$renderer.push(`<span class="icon-btn-label svelte-vx1yib">${escape_html(label)}</span>`);
90
+ } else $$renderer.push("<!--[-1-->");
19
91
  $$renderer.push(`<!--]--></button>`);
92
+ }
93
+ $$renderer.push(`<!--]-->`);
94
+ }
95
+ //#endregion
96
+ //#region src/lib/components/common/ToggleButton.svelte
97
+ function ToggleButton($$renderer, $$props) {
98
+ /** Icon shown when off (and when on, if no selectedIcon is given). */
99
+ /** Optional distinct icon shown when on. */
100
+ /** Colour of the on state. */
101
+ let { pressed, onToggle, icon, selectedIcon, label, title, ariaLabel, disabled = false, tone = "primary" } = $$props;
102
+ IconButton($$renderer, {
103
+ icon: pressed && selectedIcon ? selectedIcon : icon,
104
+ label,
105
+ title,
106
+ ariaLabel,
107
+ disabled,
108
+ tone,
109
+ selected: pressed,
110
+ ariaPressed: pressed,
111
+ onclick: onToggle
20
112
  });
21
113
  }
22
114
  //#endregion
23
115
  //#region src/lib/components/chrome/ModeSwitch.svelte
116
+ function advancedIcon($$renderer) {
117
+ $$renderer.push(`<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"><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>`);
118
+ }
24
119
  function ModeSwitch($$renderer, $$props) {
25
120
  $$renderer.component(($$renderer) => {
26
121
  const pathname = derived(() => page.url?.pathname ?? "");
27
122
  const onAdvanced = derived(() => pathname() === "/advanced" || pathname().startsWith("/advanced/"));
28
- $$renderer.push(`<button type="button"${attr_class("advanced-toggle svelte-dn9fn0", void 0, { "active": onAdvanced() })}${attr("aria-pressed", onAdvanced())} title="Advanced mode (embedded OpenCode)" aria-label="Advanced mode"><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 class="svelte-dn9fn0">Advanced</span></button>`);
123
+ function toggle() {
124
+ goto(onAdvanced() ? "/chat" : "/advanced");
125
+ }
126
+ ToggleButton($$renderer, {
127
+ pressed: onAdvanced(),
128
+ onToggle: toggle,
129
+ ariaLabel: "Advanced mode",
130
+ title: "Advanced mode (embedded OpenCode)",
131
+ icon: advancedIcon
132
+ });
133
+ });
134
+ }
135
+ //#endregion
136
+ //#region src/lib/components/common/Drawer.svelte
137
+ function Drawer($$renderer, $$props) {
138
+ $$renderer.component(($$renderer) => {
139
+ /** Optional content rendered at the start of the header (e.g. a back button). */
140
+ /** Drawer width (CSS length). */
141
+ let { open, title, onClose, children, footer, headerStart, width = "32rem" } = $$props;
142
+ if (open) {
143
+ $$renderer.push("<!--[0-->");
144
+ $$renderer.push(`<div class="drawer-scrim svelte-1u2o1qj"></div> <div class="drawer svelte-1u2o1qj"${attr_style(`--drawer-width: ${stringify(width)}`)} role="dialog" aria-modal="true"${attr("aria-label", title)} tabindex="-1"><header class="drawer-header svelte-1u2o1qj">`);
145
+ if (headerStart) {
146
+ $$renderer.push("<!--[0-->");
147
+ headerStart($$renderer);
148
+ $$renderer.push(`<!---->`);
149
+ } else $$renderer.push("<!--[-1-->");
150
+ $$renderer.push(`<!--]--> <h3 class="drawer-title svelte-1u2o1qj">${escape_html(title)}</h3> <button class="drawer-close svelte-1u2o1qj" aria-label="Close"><svg aria-hidden="true" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button></header> <div class="drawer-body svelte-1u2o1qj">`);
151
+ children($$renderer);
152
+ $$renderer.push(`<!----></div> `);
153
+ if (footer) {
154
+ $$renderer.push("<!--[0-->");
155
+ $$renderer.push(`<footer class="drawer-footer svelte-1u2o1qj">`);
156
+ footer($$renderer);
157
+ $$renderer.push(`<!----></footer>`);
158
+ } else $$renderer.push("<!--[-1-->");
159
+ $$renderer.push(`<!--]--></div>`);
160
+ } else $$renderer.push("<!--[-1-->");
161
+ $$renderer.push(`<!--]-->`);
162
+ });
163
+ }
164
+ //#endregion
165
+ //#region src/lib/components/chrome/SettingsDrawer.svelte
166
+ function gearIcon($$renderer) {
167
+ $$renderer.push(`<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"><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>`);
168
+ }
169
+ function SettingsDrawer($$renderer, $$props) {
170
+ $$renderer.component(($$renderer) => {
171
+ let { showManageAssistant = true } = $$props;
172
+ let open = false;
173
+ function setTheme(event) {
174
+ const next = event.currentTarget.value;
175
+ if (next === "light" || next === "dark" || next === "system") themeService.setPreference(next);
176
+ }
177
+ IconButton($$renderer, {
178
+ icon: gearIcon,
179
+ ariaLabel: "Settings",
180
+ title: "Settings",
181
+ selected: open,
182
+ ariaPressed: open,
183
+ onclick: () => open = true
184
+ });
185
+ $$renderer.push(`<!----> `);
186
+ Drawer($$renderer, {
187
+ open,
188
+ title: "Settings",
189
+ onClose: () => open = false,
190
+ width: "24rem",
191
+ children: ($$renderer) => {
192
+ $$renderer.push(`<div class="settings-drawer svelte-4kbm5j"><label class="field svelte-4kbm5j" for="theme-preference"><span class="field-label svelte-4kbm5j">Theme</span> `);
193
+ $$renderer.select({
194
+ id: "theme-preference",
195
+ class: "field-select",
196
+ value: themeService.preference,
197
+ onchange: setTheme
198
+ }, ($$renderer) => {
199
+ $$renderer.option({ value: "system" }, ($$renderer) => {
200
+ $$renderer.push(`System`);
201
+ });
202
+ $$renderer.option({ value: "light" }, ($$renderer) => {
203
+ $$renderer.push(`Light`);
204
+ });
205
+ $$renderer.option({ value: "dark" }, ($$renderer) => {
206
+ $$renderer.push(`Dark`);
207
+ });
208
+ }, "svelte-4kbm5j");
209
+ $$renderer.push(`</label> <nav class="settings-links svelte-4kbm5j" aria-label="Settings links">`);
210
+ if (showManageAssistant) {
211
+ $$renderer.push("<!--[0-->");
212
+ $$renderer.push(`<a class="settings-link svelte-4kbm5j" href="/admin">Manage this assistant...</a>`);
213
+ } else $$renderer.push("<!--[-1-->");
214
+ $$renderer.push(`<!--]--> <a class="settings-link svelte-4kbm5j" href="/admin/endpoints">Manage assistant connections...</a></nav></div>`);
215
+ }});
216
+ $$renderer.push(`<!---->`);
29
217
  });
30
218
  }
31
219
  //#endregion
@@ -533,30 +721,97 @@ var EndpointsService = class {
533
721
  };
534
722
  var endpointsService = new EndpointsService();
535
723
  //#endregion
536
- //#region src/lib/components/chat/EndpointSwitcher.svelte
537
- function EndpointSwitcher($$renderer, $$props) {
724
+ //#region src/lib/assistant-endpoint.ts
725
+ function isLocalAssistantUrl(url) {
726
+ if (!url) return true;
727
+ try {
728
+ const host = new URL(url).hostname;
729
+ return host === "localhost" || host === "127.0.0.1" || host === "::1" || host === "host.docker.internal";
730
+ } catch {
731
+ return true;
732
+ }
733
+ }
734
+ //#endregion
735
+ //#region src/lib/components/chat/EndpointList.svelte
736
+ function EndpointList($$renderer, $$props) {
538
737
  $$renderer.component(($$renderer) => {
539
- const menuId = "endpoint-menu";
540
- let switching = false;
541
- let isOpen = false;
738
+ /** Called after the active endpoint changes (e.g. to close the drawer). */
739
+ let { onChosen } = $$props;
542
740
  const active = derived(() => endpointsService.active);
543
741
  const endpoints = derived(() => endpointsService.endpoints);
544
- const hasChoices = derived(() => endpoints().length > 1);
545
- $$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> <!--[-->`);
742
+ const showManageAssistant = derived(() => isLocalAssistantUrl(active()?.url));
743
+ let switching = false;
744
+ $$renderer.push(`<div class="endpoint-list svelte-dlw00e">`);
745
+ if (endpointsService.error) {
746
+ $$renderer.push("<!--[0-->");
747
+ $$renderer.push(`<p class="list-error svelte-dlw00e" role="alert">${escape_html(endpointsService.error)}</p>`);
748
+ } else $$renderer.push("<!--[-1-->");
749
+ $$renderer.push(`<!--]--> <div class="group" role="group" aria-label="Assistant endpoints"><!--[-->`);
546
750
  const each_array = ensure_array_like(endpoints());
547
751
  for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
548
752
  let ep = each_array[$$index];
549
- $$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>`);
753
+ $$renderer.push(`<button type="button"${attr_class("list-item svelte-dlw00e", void 0, { "active": ep.id === active()?.id })}${attr("aria-current", ep.id === active()?.id ? "true" : void 0)}${attr("disabled", switching, true)}><span class="item-text svelte-dlw00e"><span class="item-label svelte-dlw00e">${escape_html(ep.label)}`);
754
+ if (ep.id === active()?.id) {
755
+ $$renderer.push("<!--[0-->");
756
+ $$renderer.push(`<span class="sr-only svelte-dlw00e">(current)</span>`);
757
+ } else $$renderer.push("<!--[-1-->");
758
+ $$renderer.push(`<!--]--></span> <span class="item-url svelte-dlw00e">${escape_html(ep.url)}</span></span></button>`);
550
759
  }
551
- $$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>`);
760
+ $$renderer.push(`<!--]--></div> <div class="divider svelte-dlw00e"></div> `);
761
+ if (showManageAssistant()) {
762
+ $$renderer.push("<!--[0-->");
763
+ $$renderer.push(`<a class="list-item link svelte-dlw00e" href="/admin">Manage this assistant…</a>`);
764
+ } else $$renderer.push("<!--[-1-->");
765
+ $$renderer.push(`<!--]--> <a class="list-item link svelte-dlw00e" href="/admin/endpoints">Manage assistant connections…</a></div>`);
552
766
  });
553
767
  }
554
768
  //#endregion
555
- //#region src/lib/components/chat/SessionPicker.svelte
556
- function SessionPicker($$renderer, $$props) {
769
+ //#region src/lib/components/chat/EndpointSwitcher.svelte
770
+ function EndpointSwitcher($$renderer, $$props) {
771
+ $$renderer.component(($$renderer) => {
772
+ let open = false;
773
+ const active = derived(() => endpointsService.active);
774
+ $$renderer.push(`<button type="button" class="trigger svelte-48xr05" aria-haspopup="dialog"${attr("aria-expanded", open)}${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> `);
775
+ Drawer($$renderer, {
776
+ open,
777
+ title: "Assistant endpoint",
778
+ onClose: () => open = false,
779
+ width: "26rem",
780
+ children: ($$renderer) => {
781
+ EndpointList($$renderer, { onChosen: () => open = false });
782
+ }});
783
+ $$renderer.push(`<!---->`);
784
+ });
785
+ }
786
+ //#endregion
787
+ //#region src/lib/session-title.ts
788
+ var DEFAULT_TITLE_RE = /^New session - (\d{4}-\d{2}-\d{2}T[0-9:.]+Z?)$/;
789
+ /** Resolve a session's display title. */
790
+ function resolveSessionTitle(title) {
791
+ const trimmed = (title ?? "").trim();
792
+ if (!trimmed) return "Untitled session";
793
+ const match = DEFAULT_TITLE_RE.exec(trimmed);
794
+ if (match) {
795
+ const ts = Date.parse(match[1]);
796
+ if (!Number.isNaN(ts)) return formatDateTime(ts);
797
+ }
798
+ return trimmed;
799
+ }
800
+ //#endregion
801
+ //#region src/lib/components/chat/SessionTitle.svelte
802
+ function SessionTitle($$renderer, $$props) {
803
+ $$renderer.component(($$renderer) => {
804
+ let { title } = $$props;
805
+ const display = derived(() => resolveSessionTitle(title));
806
+ $$renderer.push(`<!---->${escape_html(display())}`);
807
+ });
808
+ }
809
+ //#endregion
810
+ //#region src/lib/components/chat/SessionList.svelte
811
+ function SessionList($$renderer, $$props) {
557
812
  $$renderer.component(($$renderer) => {
558
- const menuId = "session-menu";
559
- let isOpen = false;
813
+ /** Called after a session is opened or started (e.g. to close the drawer). */
814
+ let { onChosen } = $$props;
560
815
  const SESSION_LIST_CAP = 50;
561
816
  const active = derived(() => endpointsService.active);
562
817
  const endpointState = derived(() => active() ? chat.byEndpoint.get(active().id) ?? null : null);
@@ -564,72 +819,72 @@ function SessionPicker($$renderer, $$props) {
564
819
  const loading = derived(() => endpointState()?.sessionsLoading ?? false);
565
820
  const error = derived(() => endpointState()?.sessionsError ?? "");
566
821
  const activeSessionId = derived(() => chat.activeSessionId);
567
- const activeSummary = derived(() => sessions().find((s) => s.id === activeSessionId()) ?? null);
568
- const triggerLabel = derived(() => activeSummary() ? activeSummary().title || `Untitled · ${formatRelative(activeSummary().updatedAt)}` : "New session");
569
- /**
570
- * Live-updates indicator. True when the chat service's SSE stream to
571
- * `/proxy/assistant/event` is connected — out-of-band session changes
572
- * (CLI, other clients) will flow through. Shown as a tiny dot so the
573
- * operator can tell at a glance whether the picker is reactive or
574
- * snapshot.
575
- */
576
- const liveConnected = derived(() => chat.liveConnected);
577
822
  const visibleSessions = derived(() => sessions().slice(0, SESSION_LIST_CAP));
578
823
  const overflowCount = derived(() => Math.max(0, sessions().length - SESSION_LIST_CAP));
579
- /**
580
- * Tiny relative-time helper. No date-fns dep — that would be ~30 KB for
581
- * 4 cases.
582
- */
583
- function formatRelative(ts) {
584
- if (!ts) return "";
585
- const diffSec = Math.max(0, (Date.now() - ts) / 1e3);
586
- if (diffSec < 60) return "just now";
587
- const min = Math.floor(diffSec / 60);
588
- if (min < 60) return `${min}m ago`;
589
- const hr = Math.floor(min / 60);
590
- if (hr < 24) return `${hr}h ago`;
591
- const day = Math.floor(hr / 24);
592
- if (day === 1) return "yesterday";
593
- if (day < 7) return `${day}d ago`;
594
- const wk = Math.floor(day / 7);
595
- if (wk < 5) return `${wk}w ago`;
596
- const mo = Math.floor(day / 30);
597
- if (mo < 12) return `${mo}mo ago`;
598
- return `${Math.floor(day / 365)}y ago`;
599
- }
600
- $$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> `);
824
+ $$renderer.push(`<div class="session-body svelte-1o6rxhb">`);
601
825
  if (chat.sending) {
602
826
  $$renderer.push("<!--[0-->");
603
- $$renderer.push(`<div class="notice svelte-cihcnl">Wait for the current reply to finish before switching.</div>`);
827
+ $$renderer.push(`<div class="notice svelte-1o6rxhb">Wait for the current reply to finish before switching.</div>`);
604
828
  } else $$renderer.push("<!--[-1-->");
605
- $$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> `);
829
+ $$renderer.push(`<!--]--> `);
606
830
  if (loading()) {
607
831
  $$renderer.push("<!--[0-->");
608
- $$renderer.push(`<div class="empty svelte-cihcnl">`);
832
+ $$renderer.push(`<div class="empty svelte-1o6rxhb">`);
609
833
  Spinner($$renderer, { size: 12 });
610
- $$renderer.push(`<!----> <span>Loading sessions…</span></div>`);
834
+ $$renderer.push(`<!----><span>Loading sessions…</span></div>`);
611
835
  } else if (error()) {
612
836
  $$renderer.push("<!--[1-->");
613
- $$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>`);
837
+ $$renderer.push(`<div class="list-error svelte-1o6rxhb"><span class="svelte-1o6rxhb">${escape_html(error())}</span> <button type="button" class="retry-btn svelte-1o6rxhb">Retry</button></div>`);
614
838
  } else if (sessions().length === 0) {
615
839
  $$renderer.push("<!--[2-->");
616
- $$renderer.push(`<div class="empty svelte-cihcnl">No sessions yet. Start the first one.</div>`);
840
+ $$renderer.push(`<div class="empty svelte-1o6rxhb">No sessions yet. Start the first one.</div>`);
617
841
  } else {
618
842
  $$renderer.push("<!--[-1-->");
619
- $$renderer.push(`<div class="session-list svelte-cihcnl" role="none"><!--[-->`);
843
+ $$renderer.push(`<div class="session-list svelte-1o6rxhb" role="group" aria-label="Sessions"><!--[-->`);
620
844
  const each_array = ensure_array_like(visibleSessions());
621
845
  for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
622
846
  let s = each_array[$$index];
623
- $$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>`);
847
+ $$renderer.push(`<button type="button"${attr_class("list-item session-item svelte-1o6rxhb", void 0, { "active": s.id === activeSessionId() })}${attr("aria-current", s.id === activeSessionId() ? "true" : void 0)}${attr("disabled", chat.sending, true)}${attr("title", formatDateTime(s.updatedAt))}><span class="item-text svelte-1o6rxhb"><span class="item-label svelte-1o6rxhb">`);
848
+ SessionTitle($$renderer, { title: s.title });
849
+ $$renderer.push(`<!---->`);
850
+ if (s.id === activeSessionId()) {
851
+ $$renderer.push("<!--[0-->");
852
+ $$renderer.push(`<span class="sr-only svelte-1o6rxhb">(current)</span>`);
853
+ } else $$renderer.push("<!--[-1-->");
854
+ $$renderer.push(`<!--]--></span> <span class="item-meta svelte-1o6rxhb">${escape_html(formatRelativeTime(s.updatedAt))}</span></span></button>`);
624
855
  }
625
856
  $$renderer.push(`<!--]--></div> `);
626
857
  if (overflowCount() > 0) {
627
858
  $$renderer.push("<!--[0-->");
628
- $$renderer.push(`<button type="button" class="show-all svelte-cihcnl">Show all (${escape_html(overflowCount())} more)</button>`);
859
+ $$renderer.push(`<button type="button" class="show-all svelte-1o6rxhb">Show all (${escape_html(overflowCount())} more)</button>`);
629
860
  } else $$renderer.push("<!--[-1-->");
630
861
  $$renderer.push(`<!--]-->`);
631
862
  }
632
- $$renderer.push(`<!--]--></div></div>`);
863
+ $$renderer.push(`<!--]--> <div class="divider svelte-1o6rxhb"></div> <button type="button" class="list-item new-btn svelte-1o6rxhb"${attr("disabled", chat.sending, true)}><span class="check svelte-1o6rxhb" aria-hidden="true">+</span> <span class="item-text svelte-1o6rxhb"><span class="item-label svelte-1o6rxhb">New session</span></span></button></div>`);
864
+ });
865
+ }
866
+ //#endregion
867
+ //#region src/lib/components/chat/SessionPicker.svelte
868
+ function SessionPicker($$renderer, $$props) {
869
+ $$renderer.component(($$renderer) => {
870
+ let open = false;
871
+ const active = derived(() => endpointsService.active);
872
+ const endpointState = derived(() => active() ? chat.byEndpoint.get(active().id) ?? null : null);
873
+ const sessions = derived(() => endpointState()?.sessions ?? []);
874
+ const activeSessionId = derived(() => chat.activeSessionId);
875
+ const liveConnected = derived(() => chat.liveConnected);
876
+ const activeSummary = derived(() => sessions().find((s) => s.id === activeSessionId()) ?? null);
877
+ const triggerLabel = derived(() => activeSummary() ? resolveSessionTitle(activeSummary().title) : "New session");
878
+ $$renderer.push(`<button type="button" class="trigger svelte-cihcnl" aria-haspopup="dialog"${attr("aria-expanded", open)} 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> `);
879
+ Drawer($$renderer, {
880
+ open,
881
+ title: `Sessions on ${stringify(active()?.label ?? "this endpoint")}`,
882
+ onClose: () => open = false,
883
+ width: "26rem",
884
+ children: ($$renderer) => {
885
+ SessionList($$renderer, { onChosen: () => open = false });
886
+ }});
887
+ $$renderer.push(`<!---->`);
633
888
  });
634
889
  }
635
890
  //#endregion
@@ -638,7 +893,11 @@ function VoiceControl($$renderer, $$props) {
638
893
  $$renderer.component(($$renderer) => {
639
894
  const MAX_INTERIM_CHARS = 48;
640
895
  let mounted = false;
896
+ let removeGlobalMicToggle = null;
641
897
  onDestroy(() => {
898
+ window.openpalm?.setTrayMicRecording?.(false);
899
+ removeGlobalMicToggle?.();
900
+ removeGlobalMicToggle = null;
642
901
  destroyVoice();
643
902
  });
644
903
  let supported = derived(() => mounted);
@@ -696,68 +955,49 @@ function VoiceControl($$renderer, $$props) {
696
955
  }
697
956
  //#endregion
698
957
  //#region src/lib/components/chrome/Navbar.svelte
958
+ function chatIcon($$renderer) {
959
+ $$renderer.push(`<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"><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>`);
960
+ }
699
961
  function Navbar($$renderer, $$props) {
700
962
  $$renderer.component(($$renderer) => {
701
963
  const pathname = derived(() => page.url?.pathname ?? "");
702
964
  const onAdmin = derived(() => pathname() === "/admin" || pathname().startsWith("/admin/"));
703
- const onChatSurface = derived(() => pathname() === "/chat" || pathname().startsWith("/chat/") || pathname() === "/advanced" || pathname().startsWith("/advanced/"));
704
- let startingNew = false;
965
+ const onChatSurface = derived(() => pathname() === "/chat" || pathname().startsWith("/chat/"));
966
+ const onAdvancedSurface = derived(() => pathname() === "/advanced" || pathname().startsWith("/advanced/"));
705
967
  const isLocalAssistant = derived(() => {
706
- const url = endpointsService.active?.url ?? "";
707
- if (!url) return true;
708
- try {
709
- const host = new URL(url).hostname;
710
- return host === "localhost" || host === "127.0.0.1" || host === "::1" || host === "host.docker.internal";
711
- } catch {
712
- return true;
713
- }
968
+ return isLocalAssistantUrl(endpointsService.active?.url);
714
969
  });
715
- $$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> `);
716
- if (onChatSurface()) {
717
- $$renderer.push("<!--[0-->");
718
- ModeSwitch($$renderer);
719
- } else $$renderer.push("<!--[-1-->");
720
- $$renderer.push(`<!--]--> <div class="navbar-actions svelte-66bgq1">`);
970
+ $$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">`);
721
971
  if (onAdmin()) {
722
972
  $$renderer.push("<!--[0-->");
723
- $$renderer.push(`<a href="/chat" class="gear-btn svelte-66bgq1" aria-label="Back to chat" title="Chat"><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"><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></a>`);
724
- } else if (isLocalAssistant()) {
725
- $$renderer.push("<!--[1-->");
726
- $$renderer.push(`<a href="/admin" class="gear-btn svelte-66bgq1" aria-label="Settings &amp; administration" 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>`);
973
+ IconButton($$renderer, {
974
+ href: "/chat",
975
+ ariaLabel: "Back to chat",
976
+ title: "Chat",
977
+ icon: chatIcon
978
+ });
727
979
  } else $$renderer.push("<!--[-1-->");
728
980
  $$renderer.push(`<!--]--> `);
729
- EndpointSwitcher($$renderer);
730
- $$renderer.push(`<!----> `);
731
- SessionPicker($$renderer);
732
- $$renderer.push(`<!----> <button type="button" class="newchat-btn svelte-66bgq1"${attr("disabled", startingNew, true)} aria-label="Start a new chat" title="New chat"><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"><path d="M12 5v14"></path><path d="M5 12h14"></path></svg></button> `);
733
- ThemeToggle($$renderer);
981
+ SettingsDrawer($$renderer, { showManageAssistant: isLocalAssistant() });
734
982
  $$renderer.push(`<!----> `);
735
- VoiceControl($$renderer);
736
- $$renderer.push(`<!----></div></div></header>`);
737
- });
738
- }
739
- //#endregion
740
- //#region src/lib/components/common/AuthGate.svelte
741
- function AuthGate($$renderer, $$props) {
742
- $$renderer.component(($$renderer) => {
743
- let { onSuccess, loading, error } = $$props;
744
- let tokenInput = "";
745
- $$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")}>`);
746
- $$renderer.push("<!--[-1-->");
747
- $$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>`);
748
- $$renderer.push(`<!--]--></button></div> `);
749
- if (error) {
983
+ if (onChatSurface()) {
750
984
  $$renderer.push("<!--[0-->");
751
- $$renderer.push(`<p class="auth-error svelte-zhbyfn" role="alert">${escape_html(error)}</p>`);
985
+ $$renderer.push(`<span class="chat-selectors svelte-66bgq1">`);
986
+ EndpointSwitcher($$renderer);
987
+ $$renderer.push(`<!----> `);
988
+ SessionPicker($$renderer);
989
+ $$renderer.push(`<!----></span>`);
752
990
  } else $$renderer.push("<!--[-1-->");
753
- $$renderer.push(`<!--]--> <button class="btn btn-primary" type="submit"${attr("disabled", loading || !tokenInput.trim(), true)}>`);
754
- if (loading) {
991
+ $$renderer.push(`<!--]--> `);
992
+ if (onChatSurface() || onAdvancedSurface()) {
755
993
  $$renderer.push("<!--[0-->");
756
- Spinner($$renderer, {});
994
+ ModeSwitch($$renderer);
757
995
  } else $$renderer.push("<!--[-1-->");
758
- $$renderer.push(`<!--]--> Unlock Console</button></form></section></main>`);
996
+ $$renderer.push(`<!--]--> `);
997
+ VoiceControl($$renderer);
998
+ $$renderer.push(`<!----></div></div></header>`);
759
999
  });
760
1000
  }
761
1001
 
762
- export { AuthGate as A, Navbar as N, chat as c, endpointsService as e };
763
- //# sourceMappingURL=AuthGate-CUCB24XJ.js.map
1002
+ export { EndpointList as E, IconButton as I, Navbar as N, SessionList as S, chat as c, endpointsService as e, formatTime as f };
1003
+ //# sourceMappingURL=Navbar-lB4kFS7g.js.map