masks-server 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/masks/server/enrollments_controller.rb +66 -0
  3. data/app/controllers/masks/server/introspections_controller.rb +2 -2
  4. data/app/controllers/masks/server/registrations_controller.rb +31 -1
  5. data/app/graphql/masks/server/manage/types/client_type.rb +8 -0
  6. data/app/graphql/masks/server/manage/types/query_type.rb +6 -1
  7. data/app/helpers/masks/server/application_helper.rb +0 -1
  8. data/app/helpers/masks/server/scopes_helper.rb +28 -0
  9. data/app/jobs/masks/server/cleanup_job.rb +1 -0
  10. data/app/models/masks/server/client.rb +81 -1
  11. data/app/models/masks/server/client_keys.rb +6 -1
  12. data/app/models/masks/server/enrollment_token.rb +54 -0
  13. data/app/models/masks/server/event.rb +3 -0
  14. data/app/models/masks/server/issuer.rb +1 -0
  15. data/app/models/masks/server/namespace.rb +6 -3
  16. data/app/models/masks/server/replay.rb +22 -4
  17. data/app/models/masks/server/token.rb +1 -0
  18. data/app/views/layouts/masks/server/manage.html.erb +2 -2
  19. data/app/views/masks/server/application/_person.html.erb +1 -1
  20. data/app/views/masks/server/handshakes/show.html.erb +129 -59
  21. data/config/locales/de/account.yml +1 -1
  22. data/config/locales/de/events.yml +5 -2
  23. data/config/locales/de/flashes.yml +2 -2
  24. data/config/locales/de/handshakes.yml +33 -14
  25. data/config/locales/de/mailers.yml +1 -1
  26. data/config/locales/de/manage/activity.yml +2 -2
  27. data/config/locales/de/manage/actor.yml +41 -23
  28. data/config/locales/de/manage/actors.yml +16 -15
  29. data/config/locales/de/manage/api.yml +1 -1
  30. data/config/locales/de/manage/app.yml +6 -6
  31. data/config/locales/de/manage/client.yml +45 -45
  32. data/config/locales/de/manage/clients.yml +28 -32
  33. data/config/locales/de/manage/connections.yml +2 -2
  34. data/config/locales/de/manage/consents.yml +2 -2
  35. data/config/locales/de/manage/device.yml +7 -7
  36. data/config/locales/de/manage/devices.yml +18 -18
  37. data/config/locales/de/manage/directory.yml +1 -1
  38. data/config/locales/de/manage/domains.yml +6 -6
  39. data/config/locales/de/manage/emails.yml +4 -4
  40. data/config/locales/de/manage/events.yml +3 -0
  41. data/config/locales/de/manage/groups.yml +6 -6
  42. data/config/locales/de/manage/ldap.yml +8 -8
  43. data/config/locales/de/manage/namespaces.yml +1 -1
  44. data/config/locales/de/manage/organization.yml +15 -8
  45. data/config/locales/de/manage/organizations.yml +3 -3
  46. data/config/locales/de/manage/policies.yml +6 -6
  47. data/config/locales/de/manage/policy_rules.yml +1 -1
  48. data/config/locales/de/manage/presence.yml +6 -6
  49. data/config/locales/de/manage/providers.yml +70 -48
  50. data/config/locales/de/manage/provisioning.yml +4 -4
  51. data/config/locales/de/manage/senders.yml +1 -1
  52. data/config/locales/de/manage/settings.yml +37 -26
  53. data/config/locales/de/manage/settings_shell.yml +2 -2
  54. data/config/locales/de/refusals.yml +5 -5
  55. data/config/locales/en/account.yml +3 -3
  56. data/config/locales/en/events.yml +4 -1
  57. data/config/locales/en/flashes.yml +3 -3
  58. data/config/locales/en/handshakes.yml +33 -14
  59. data/config/locales/en/logins.yml +2 -2
  60. data/config/locales/en/manage/actor.yml +32 -14
  61. data/config/locales/en/manage/actors.yml +16 -15
  62. data/config/locales/en/manage/app.yml +5 -5
  63. data/config/locales/en/manage/client.yml +9 -9
  64. data/config/locales/en/manage/clients.yml +8 -12
  65. data/config/locales/en/manage/connections.yml +1 -1
  66. data/config/locales/en/manage/consents.yml +1 -1
  67. data/config/locales/en/manage/device.yml +1 -1
  68. data/config/locales/en/manage/devices.yml +1 -1
  69. data/config/locales/en/manage/directory.yml +1 -1
  70. data/config/locales/en/manage/domains.yml +6 -6
  71. data/config/locales/en/manage/emails.yml +4 -4
  72. data/config/locales/en/manage/events.yml +3 -0
  73. data/config/locales/en/manage/groups.yml +6 -6
  74. data/config/locales/en/manage/ldap.yml +8 -8
  75. data/config/locales/en/manage/messages.yml +1 -1
  76. data/config/locales/en/manage/namespaces.yml +1 -1
  77. data/config/locales/en/manage/organization.yml +16 -9
  78. data/config/locales/en/manage/organizations.yml +3 -3
  79. data/config/locales/en/manage/policies.yml +6 -6
  80. data/config/locales/en/manage/policy_rules.yml +2 -2
  81. data/config/locales/en/manage/presence.yml +1 -1
  82. data/config/locales/en/manage/providers.yml +70 -48
  83. data/config/locales/en/manage/provisioning.yml +4 -4
  84. data/config/locales/en/manage/senders.yml +2 -2
  85. data/config/locales/en/manage/settings.yml +34 -23
  86. data/config/locales/es/account.yml +1 -1
  87. data/config/locales/es/application.yml +1 -1
  88. data/config/locales/es/events.yml +4 -1
  89. data/config/locales/es/flashes.yml +4 -4
  90. data/config/locales/es/handshakes.yml +33 -14
  91. data/config/locales/es/logins.yml +12 -12
  92. data/config/locales/es/mailers.yml +7 -7
  93. data/config/locales/es/manage/activity.yml +2 -2
  94. data/config/locales/es/manage/actor.yml +33 -15
  95. data/config/locales/es/manage/actors.yml +17 -16
  96. data/config/locales/es/manage/api.yml +1 -1
  97. data/config/locales/es/manage/app.yml +6 -6
  98. data/config/locales/es/manage/client.yml +30 -30
  99. data/config/locales/es/manage/clients.yml +22 -26
  100. data/config/locales/es/manage/connections.yml +1 -1
  101. data/config/locales/es/manage/consents.yml +1 -1
  102. data/config/locales/es/manage/device.yml +1 -1
  103. data/config/locales/es/manage/directory.yml +1 -1
  104. data/config/locales/es/manage/domains.yml +5 -5
  105. data/config/locales/es/manage/emails.yml +7 -7
  106. data/config/locales/es/manage/events.yml +3 -0
  107. data/config/locales/es/manage/groups.yml +6 -6
  108. data/config/locales/es/manage/ldap.yml +8 -8
  109. data/config/locales/es/manage/namespaces.yml +1 -1
  110. data/config/locales/es/manage/organization.yml +16 -9
  111. data/config/locales/es/manage/organizations.yml +3 -3
  112. data/config/locales/es/manage/policies.yml +8 -8
  113. data/config/locales/es/manage/policy_rules.yml +2 -2
  114. data/config/locales/es/manage/providers.yml +70 -48
  115. data/config/locales/es/manage/provisioning.yml +4 -4
  116. data/config/locales/es/manage/senders.yml +1 -1
  117. data/config/locales/es/manage/settings.yml +38 -27
  118. data/config/locales/es/manage/settings_shell.yml +2 -2
  119. data/config/locales/es/refusals.yml +3 -3
  120. data/config/locales/fr/events.yml +3 -0
  121. data/config/locales/fr/flashes.yml +1 -1
  122. data/config/locales/fr/handshakes.yml +33 -14
  123. data/config/locales/fr/manage/activity.yml +4 -4
  124. data/config/locales/fr/manage/actor.yml +43 -25
  125. data/config/locales/fr/manage/actors.yml +22 -21
  126. data/config/locales/fr/manage/api.yml +1 -1
  127. data/config/locales/fr/manage/app.yml +7 -7
  128. data/config/locales/fr/manage/client.yml +50 -50
  129. data/config/locales/fr/manage/clients.yml +28 -32
  130. data/config/locales/fr/manage/connections.yml +2 -2
  131. data/config/locales/fr/manage/consents.yml +1 -1
  132. data/config/locales/fr/manage/device.yml +1 -1
  133. data/config/locales/fr/manage/directory.yml +1 -1
  134. data/config/locales/fr/manage/domains.yml +6 -6
  135. data/config/locales/fr/manage/emails.yml +5 -5
  136. data/config/locales/fr/manage/events.yml +3 -0
  137. data/config/locales/fr/manage/groups.yml +6 -6
  138. data/config/locales/fr/manage/ldap.yml +8 -8
  139. data/config/locales/fr/manage/namespaces.yml +1 -1
  140. data/config/locales/fr/manage/organization.yml +15 -8
  141. data/config/locales/fr/manage/organizations.yml +3 -3
  142. data/config/locales/fr/manage/policies.yml +6 -6
  143. data/config/locales/fr/manage/policy_rules.yml +1 -1
  144. data/config/locales/fr/manage/providers.yml +70 -48
  145. data/config/locales/fr/manage/provisioning.yml +4 -4
  146. data/config/locales/fr/manage/senders.yml +1 -1
  147. data/config/locales/fr/manage/settings.yml +38 -27
  148. data/config/locales/fr/manage/settings_shell.yml +2 -2
  149. data/config/routes.rb +2 -0
  150. data/config/vite.json +1 -0
  151. data/db/migrate/20261011190000_add_enrolled_by_to_clients.rb +5 -0
  152. data/db/migrate/20261012100000_create_replays.rb +23 -0
  153. data/public/masks-assets/.vite/manifest-assets.json +1 -0
  154. data/public/masks-assets/.vite/manifest.json +62 -0
  155. data/public/masks-assets/assets/app-DoQZrM_J.css +2 -0
  156. data/public/masks-assets/assets/console-DoyNbIw3.css +1 -0
  157. data/public/masks-assets/assets/handshake-DIFZPSAK.js +2 -0
  158. data/public/masks-assets/assets/handshake-DIFZPSAK.js.map +1 -0
  159. data/public/masks-assets/assets/manage-isLCrWiU.js +567 -0
  160. data/public/masks-assets/assets/manage-isLCrWiU.js.map +1 -0
  161. data/version.txt +1 -1
  162. metadata +14 -7
  163. data/public/masks-assets/assets/app-olx-5PkA.css +0 -2
  164. data/public/masks-assets/assets/console-CiuQ3qj0.css +0 -1
  165. data/public/masks-assets/assets/handshake-BYhhQ_X3.js +0 -2
  166. data/public/masks-assets/assets/handshake-BYhhQ_X3.js.map +0 -1
  167. data/public/masks-assets/assets/manage-Z3GmPDNQ.js +0 -560
  168. data/public/masks-assets/assets/manage-Z3GmPDNQ.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage-isLCrWiU.js","names":["held","$.proxy","$.proxy","root","$.from_html","$.child","rest_excludes","root","$.from_html","$.prop","$.rest_props","$.child","root","$.from_html","$.prop","$.sibling","$.child","$.only_child","$.set_text","root","$.from_html","root_1","$.comment","$.first_child","$.derived","$.to_array","$.get","$.child","$.proxy","root","$.from_html","$.prop","$.derived","$.get","$.comment","$.first_child","$.child","$.only_child","$.sibling","$.delegate","$.proxy","root","$.from_html","$.props_id","$.prop","$.child","$.sibling","$.only_child","root","$.from_html","root_1","root_2","root_3","root_4","$.prop","$.child","$.only_child","$.sibling","$.derived","$.get","$.set_text","$.set_class","root","$.from_html","$.child","$.delegate","root","$.from_html","$.prop","$.child","$.sibling","$.only_child","$.delegate","root","$.from_html","root_1","$.derived","$.comment","$.first_child","$.text","$.set_text","$.child","$.get","$.index","$.only_child","$.sibling","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","$.state","$.proxy","$.derived","$.get","$.child","$.first_child","$.sibling","$.to_array","$.only_child","$.set_attribute","$.set","$.set_text","$.comment","$.text","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","$.prop","$.state","$.derived","$.get","$.child","$.sibling","$.only_child","$.set_text","$.set_class","$.set","$.set_attribute","$.delegate","root","$.from_html","root_1","root_2","$.prop","$.rest_props","$.child","$.only_child","$.sibling","$.set_text","$.delegate","root","$.from_html","root_1","root_2","$.first_child","$.only_child","$.set_text","$.sibling","root","$.from_html","root_1","root_2","root_3","root_4","$.prop","$.child","$.text","$.set_text","$.sibling","$.comment","$.first_child","$.only_child","$.set_class","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","$.state","$.proxy","$.derived","$.get","$.first_child","$.to_array","$.only_child","$.sibling","$.child","$.set","$.set_text","$.text","$.comment","$.set_class","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.prop","$.comment","$.first_child","$.only_child","$.set_text","$.child","$.derived","$.get","$.text","$.sibling","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","$.prop","$.comment","$.first_child","$.only_child","$.set_text","$.child","$.derived","$.get","$.text","$.sibling","$.set_class","$.index","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","$.prop","$.state","$.derived","$.get","$.comment","$.first_child","$.only_child","$.set_text","$.child","$.sibling","$.text","$.set_class","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","$.prop","$.state","$.derived","$.get","$.child","$.only_child","$.sibling","$.set_text","$.first_child","$.set","$.text","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.prop","$.state","$.derived","$.get","$.comment","$.first_child","$.only_child","$.set_text","$.child","$.sibling","$.text","$.set_class","$.set","$.delegate","root","$.from_html","$.prop","$.derived","$.to_array","$.get","$.text","$.set_text","$.set_attribute","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","root_19","root_20","root_21","root_22","root_23","root_24","root_25","root_26","root_27","root_28","$.prop","$.state","$.proxy","$.derived","$.get","reset","$.comment","$.first_child","$.only_child","$.set_text","$.set_class","$.sibling","$.child","$.text","$.to_array","$.delegate","root","$.from_html","root_1","$.get","$.first_child","$.only_child","$.sibling","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.state","$.proxy","$.get","$.derived","$.comment","$.first_child","$.only_child","$.set_text","$.sibling","$.child","$.text","$.delegate","root","$.from_html","root_1","$.prop","$.comment","$.first_child","$.only_child","root","$.from_html","root_1","root_2","$.prop","$.child","$.only_child","$.set_text","$.sibling","$.derived","$.to_array","$.get","$.derived_safe_equal","$.fallback","$.select_option","$.delegate","root","$.from_html","$.prop","$.child","$.sibling","$.set_text","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","$.state","$.proxy","$.derived","$.get","$.first_child","$.sibling","$.only_child","$.set_text","$.to_array","$.child","$.set","$.text","$.comment","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","$.prop","$.derived","$.get","$.first_child","$.sibling","$.child","$.only_child","$.text","$.set_text","$.delegate","root","$.from_html","root_1","$.prop","$.state","$.proxy","$.get","$.derived","$.child","$.only_child","$.sibling","$.set_text","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","root_19","root_20","root_21","root_22","root_23","root_24","root_25","root_26","root_27","$.prop","$.state","$.proxy","$.derived","$.get","$.comment","$.first_child","$.only_child","$.set_text","$.sibling","$.child","$.text","$.set","$.to_array","$.select_option","$.delegate","root","$.from_html","root_1","$.first_child","$.child","$.derived","$.get","$.text","$.set_text","$.sibling","$.only_child","$.noop","root","$.from_html","root_1","$.prop","$.child","$.only_child","$.sibling","$.set_text","$.clsx","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","$.state","$.get","$.only_child","$.set_text","$.derived","$.first_child","$.sibling","$.child","$.set","$.comment","$.set_class","$.text","$.delegate","root","$.from_html","root_1","root_2","$.comment","$.first_child","$.get","$.only_child","$.sibling","$.child","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","root_19","root_20","root_21","root_22","root_23","root_24","root_25","root_26","root_27","$.noop","$.derived","$.get","$.first_child","$.only_child","$.sibling","$.prop","$.state","$.proxy","$.child","$.text","$.set_text","$.set","$.to_array","$.set_attribute","$.comment","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","$.state","$.derived","$.get","$.first_child","$.sibling","$.child","$.only_child","$.set_text","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","$.state","$.proxy","$.derived","$.get","$.first_child","$.sibling","$.child","$.only_child","$.set_text","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.state","$.get","$.comment","$.first_child","$.only_child","$.set_text","$.derived","$.sibling","$.child","$.set_attribute","$.text","$.delegate","root","$.from_svg","root_1","root_2","$.from_html","root_3","root_4","root_5","$.derived","$.get","$.state","$.child","$.only_child","$.sibling","$.set_class","$.set","root","$.from_html","$.proxy","$.comment","$.first_child","$.child","$.only_child","$.sibling","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","$.state","$.proxy","$.get","$.derived","$.comment","$.first_child","$.only_child","$.set_text","$.child","$.sibling","$.text","$.set","$.set_attribute","$.noop","$.delegate","root","$.from_html","$.child","$.derived","$.get","$.text","$.set_text","$.sibling","$.set_attribute","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","$.state","$.proxy","$.derived","$.get","$.first_child","$.sibling","$.child","$.text","$.set_text","$.only_child","$.select_option","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","$.state","$.proxy","$.only_child","$.set_text","$.derived","$.get","$.first_child","$.sibling","$.comment","$.child","$.text","$.delegate","$.noop","root_1","$.child","$.sibling","$.only_child","root","$.set_text","$.from_html","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","$.derived","$.get","$.first_child","$.to_array","$.comment","$.prop","$.state","$.proxy","$.text","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","$.state","$.proxy","$.derived","$.get","$.child","$.sibling","$.first_child","$.only_child","$.select_option","$.comment","$.set_text","$.delegate","root","$.from_html","root_1","$.state","$.proxy","$.derived","$.get","$.child","$.only_child","$.sibling","$.text","$.set_text","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.state","$.child","$.get","$.noop","$.derived","$.comment","$.first_child","$.only_child","$.set_attribute","$.sibling","$.select_option","$.set","$.set_text","$.update","$.delegate","root","$.from_html","$.prop","$.derived","$.get","$.first_child","$.child","$.text","$.set_text","$.sibling","$.set_attribute","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.state","$.get","$.derived","$.first_child","$.sibling","$.child","$.only_child","$.set","$.set_text","$.comment","$.delegate","root","$.from_html","root_1","root_2","root_3","$.state","$.first_child","$.sibling","$.derived","$.get","$.child","$.only_child","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.state","$.proxy","$.snapshot","$.get","$.derived","$.comment","$.first_child","$.only_child","$.set_text","$.sibling","$.child","$.set","$.to_array","$.text","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","$.state","$.get","$.derived","$.first_child","$.sibling","$.child","$.only_child","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","$.state","$.get","$.derived","$.first_child","$.sibling","$.child","$.only_child","$.set_text","$.set","$.to_array","$.delegate","root","$.from_html","$.derived","$.get","$.child","$.sibling","root","$.from_html","root_1","$.child","$.derived","$.get","$.text","$.set_text","$.sibling","$.set_class","$.only_child","$.delegate","$.from_html","$.from_svg","$.state","$.derived","$.get","$.comment","$.first_child","$.child","$.only_child","$.sibling","$.set_text","$.to_array","$.text","$.set_attribute","$.delegate","derived_safe_equal","append","get","html","if_block","key","text$1","child","template_effect","delegate","sibling","first_child","delegated","from_html","from_svg","mount","props_id","update","event","snippet","index","user_effect","untrack","set","proxy","state","select_option","rest_props","push","clsx","bind_group","next","remove_input_defaults","noop","user_derived","set_attribute","to_array","init_select","bind_select_value","prop","pop","comment","set_text","bind_value","reset","set_value","remove_textarea_child","bind_this","setContext","set_checked","only_child","getContext","bind_checked","snapshot","initial","attribute_effect","fallback","set_style","each","set_class","replay_events","ALPHABET","random","bytes","length","value","byte","encode","binary","challenge","verifier","method","createDpopKey","pair","exported","text","dpopProof","target","url","header","payload","accessToken","signing","MasksError","description","code","status","LoginRequired","KINDS","masksError","Kind","error","HASHES","ALGORITHM","padded","part","out","json","audiences","verifyIdToken","rawHeader","rawPayload","rawSignature","rest","token","hash","keyFor","claims","now","issuer","audience","leeway","nonce","PENDING","list","createBrowserClient","options","call","store","scope","resources","document","held","keys","refreshing","dpopKey","proved","generation","discover","response","found","fetchKeys","jwks_uri","revalidate","jwk","refresh","kid","post","started","token_endpoint","body","authorizeUrl","waiting","returnTo","organization","query","prompt","authorization_endpoint","avatarUrl","avatar_endpoint","avatar_styles_supported","style","base","subject","size","expired","renew","previous","tokens","revoke","revocation_endpoint","opts","raw","failure","named","access","headers","init","name","leaving","everywhere","end_session_endpoint","postLogoutRedirectUri","PLACEHOLDER","held$1","plurals","useCopy","copy","locale","lookup","fill","values","whole","t","form","KEY","SCOPE","keep","all","clientId","boot","forget","callbackUri","handshakeUrl","redeem","detach","files","walk","path","one","at","variables","createApi","client","build","authorization","answer","idToken","sent","file","ROUTER","createRouter","settle","root","to","provideRouter","router","useRouter","root$58","Empty","div","p","node","$$props","$$anchor","rest_excludes$1","root$57","Link","klass","follow","a","$0","root$56","Spinner","label","span","root$55","root_1$45","Marks","SHAPES","fragment","consequent","shape","tone","$$array","$$item","span_1","svg","$$render","blocked","actor","device","actorMarks","createPages","cursor","total","root$54","Pager","busy","first","last","earlier","later","nav","button","text_1","button_1","text_2","$1","$2","$3","createFeedback","clear","blame","thrown","notice","work","formatters","formatter","kind","make","DAY","lang","MOMENT","RELATIVE","STEPS","parsed","iso","day","moment","since","gap","unit","joined","kept","root$53","Tip","id","root$52","root_1$44","root_2$36","root_3$32","root_4$30","Section","title","lede","help","row","section","classes","consequent_4","div_1","node_1","consequent_1","div_2","h2","node_2","node_3","consequent_2","node_4","consequent_3","div_3","node_5","div_4","node_6","root$51","Row","tr","root$50","Search","input","$$args","root$49","root_1$43","Table","heads","column","alternate","table","thead","th","head","tbody","root$48","root_1$42","root_2$35","root_3$31","root_4$29","root_5$26","root_6$24","root_7$20","root_8$19","root_9$12","root_10$9","root_11$8","root_12$8","root_13$7","root_14$7","root_15$5","Devices","LENSES","COLUMNS","devices","loading","lens","search","agent","chosen","refuse","narrowing","load","data","look","filter","clearFilter","toggle","toggleAll","blocking","outcome","done","spared","bulk","question","mutation","blockChosen","blockMatching","nothing","actions","$$value","fragment_1","text_3","label_1","text_4","button_2","text_5","p_1","text_6","code_1","text_7","button_3","text_8","label_2","input_1","text_9","button_4","text_10","text_11","consequent_5","alternate_1","fragment_4","node_7","fragment_6","td","input_2","td_1","node_8","text_12","text_13","node_9","consequent_6","span_2","text_14","consequent_7","span_3","text_15","node_10","consequent_8","span_4","text_16","node_11","consequent_9","div_5","text_17","td_2","node_12","consequent_10","div_6","fragment_8","text_18","node_13","text_19","span_5","text_20","td_3","text_21","td_4","text_22","root$47","root_1$41","root_2$34","root_3$30","root_4$28","root_5$25","root_6$23","root_7$19","root_8$18","root_9$11","root_10$8","ScopesEditor","available","disabled","open","active","unfolded","needle","offered","rank","b","listed","typed","novel","choices","shown","add","remove","keydown","ul","li","classes_1","li_1","ul_1","li_2","li_3","rest_excludes","root$46","root_1$40","root_2$33","Field","type","onsave","save","root$45","root_1$39","root_2$32","Notices","root$44","root_1$38","root_2$31","root_3$29","root_4$27","Page","back","hero","heading","h1","fragment_2","root$43","root_1$37","root_2$30","root_3$28","root_4$26","root_5$24","root_6$22","root_7$18","root_8$17","root_9$10","root_10$7","root_11$7","root_12$7","root_13$6","root_14$6","ActorsPage","binding_group","pages","STANDARD","feedback","actors","adding","inviting","addresses","joining","groups","invited","groupsLoaded","invitedCount","openInvites","inviteMany","again","nickname","email","password","scopes","supported","minimum","created","turn","direction","close","send","presence","textarea","fieldset","legend","group","input_value","fragment_7","button_5","button_6","fragment_9","node_14","node_15","p_2","node_16","fragment_14","node_17","rows","fragment_15","node_18","fragment_17","img","div_7","node_19","node_20","div_8","text_23","root$42","root_1$36","root_2$29","root_3$27","root_4$25","root_5$23","root_6$21","root_7$17","root_8$16","Connections","showActor","stop","delegation","connection","span_6","span_7","span_8","span_9","root$41","root_1$35","root_2$28","root_3$26","root_4$24","root_5$22","root_6$20","Consents","consent","GRAVE","NOTABLE","action","detailed","details","phrase","root$40","root_1$34","root_2$27","root_3$25","root_4$23","root_5$21","root_6$19","Events","empty","limit","collapse","same","other","runs","UUID","trail","ol","count","time","d","root$39","root_1$33","root_2$26","root_3$24","root_4$22","root_5$20","root_6$18","root_7$16","root_8$15","root_9$9","Presence","columns","act","session","onDevice","signOutDevice","block","unblock","signOutEverywhere","allSessions","allDevices","sessions","h3","section_1","h3_1","alternate_2","span_10","root$38","root_1$32","root_2$25","root_3$23","root_4$21","root_5$19","root_6$17","root_7$15","root_8$14","Tokens","KIND","said","family","$4","$5","root$37","Parts","root$36","root_1$31","root_2$24","root_3$22","root_4$20","root_5$18","root_6$16","root_7$14","root_8$13","root_9$8","root_10$6","root_11$6","root_12$6","root_13$5","root_14$5","root_15$4","root_16$4","root_17$4","root_18$4","root_19$3","root_20$3","root_21$3","root_22$3","root_23$3","root_24$3","root_25$3","root_26$3","root_27$3","root_28$1","root_29","root_30","root_31","root_32","root_33","root_34","ActorPage","FIELDS","MORE","PROFILE","viewer","draft","codes","link","uploading","yourself","PARTS","identity","approve","resetFactors","dismiss","belongs","toggleGroup","saveProfile","saveScopes","generate","recover","confirmation","result","reset$1","resend","confirmEmail","revokePasskey","passkey","choose","removePhoto","disable","CODE_FACTORS","turnOff","lower","suspend","restore","alternate_4","lead","after","strong","strong_1","div_9","div_10","div_11","strong_2","div_12","div_13","div_14","strong_3","div_15","div_16","div_17","strong_4","div_18","div_19","consequent_13","fragment_5","div_20","code_2","consequent_12","fragment_10","consequent_11","text_24","text_25","text_26","membership","p_3","text_27","text_28","text_29","consequent_21","fragment_13","node_21","node_22","consequent_14","text_30","button_7","text_31","node_23","node_24","consequent_15","div_21","text_32","text_33","div_22","button_8","text_34","button_9","text_35","node_25","field","factor","div_23","text_36","button_10","text_37","node_26","consequent_16","p_4","text_38","node_27","fragment_16","node_28","consequent_17","p_5","text_39","div_24","span_11","text_40","span_12","node_29","consequent_18","span_13","text_41","node_30","consequent_19","span_14","text_42","button_11","text_43","node_31","consequent_20","span_15","text_44","div_25","span_16","text_45","span_17","text_46","node_32","node_33","consequent_22","text_47","alternate_3","fragment_23","node_34","fragment_24","div_26","$$array_1","summary","text_48","div_27","$$array_2","button_12","text_49","node_35","fragment_27","div_28","div_29","img_1","span_18","text_50","div_30","classes_2","text_51","node_36","consequent_23","button_13","text_52","node_37","consequent_24","span_19","text_53","node_38","fragment_28","node_39","consequent_26","div_31","node_40","consequent_25","button_14","text_54","button_15","text_55","root$35","root_1$30","Facts","dl","term","mono","dt","dd","root$34","root_1$29","root_2$23","root_3$21","root_4$19","root_5$17","root_6$15","root_7$13","root_8$12","DevicePage","events","signOut","facts","fragment_3","root$33","root_1$28","ClientLogo","sized","root$32","root_1$27","root_2$22","Select","select","off","option","option_value","select_value","root$31","Switch","checked","onchange","root$30","root_1$26","root_2$21","root_3$20","root_4$18","root_5$16","root_6$14","root_7$12","root_8$11","root_9$7","root_10$5","root_11$5","root_12$5","root_13$4","root_14$4","ClientsPage","presets","blank","preset","lines","readMetadata","read","request","archived","clients","textarea_1","textarea_2","label_3","textarea_3","label_4","textarea_4","fragment_11","fragment_12","setting","fragment_19","POLICY_FIELDS","FACTORS","CONFIRMATIONS","PRESENCE","known","yes","UNITS","duration","seconds","describePolicy","policy","policyDifferences","theirs","root$29","root_1$25","root_2$20","root_3$19","root_4$17","Namespaces","showClient","release","root$28","root_1$24","Lines","hint","fresh","changed","root$27","root_1$23","root_2$19","root_3$18","root_4$16","root_5$15","root_6$13","root_7$11","root_8$10","root_9$6","root_10$4","root_11$4","root_12$4","root_13$3","root_14$3","root_15$3","root_16$3","root_17$3","root_18$3","root_19$2","root_20$2","root_21$2","root_22$2","root_23$2","root_24$2","root_25$2","root_26$2","root_27$2","ClientPage","QUERY","roles","policies","fallbackPolicy","logoutUri","jwksUri","jwks","declared","lasts","accessMinutes","refreshDays","sector","metadataUrl","certificate","entityId","sloUrl","links","attributes","secret","NAME_IDS","saml","SUBJECTS","GRANTS","LINKS","placeholder","saveLinks","changes","logoChanged","saveLifetimes","differences","keyed","mapped","attribute","claim","roleList","admit","on","saveRoles","unattended","granting","grant","signsInAsItself","knowsActorsAs","saveKeys","pending","saveKeySet","saveDeclared","saveAttributes","pairs","line","METHODS","authenticates","rotate","archive","alternate_5","fragment_22","p_6","label_5","select_1","option_1","option_1_value","select_1_value","fragment_29","node_41","label_6","select_2","format","$$array_3","option_2","option_2_value","select_2_value","label_7","label_8","node_42","node_43","$6","node_44","fragment_30","node_45","p_7","node_46","node_47","$$array_4","node_48","fragment_34","label_9","select_3","option_3","node_49","option_4","option_4_value","select_3_value","node_50","p_8","fragment_35","node_51","instead","fragment_36","p_9","node_52","fragment_37","node_53","node_54","node_55","consequent_27","form_1","node_56","node_57","node_58","node_59","node_60","consequent_28","root$26","root_1$22","OrganizationCell","root$25","root_1$21","OrganizationHeadcount","root$24","root_1$20","root_2$18","root_3$17","root_4$15","root_5$14","root_6$12","root_7$10","OrganizationsPage","keyTouched","slug","members","signsIn","provider","role","root$23","root_1$19","root_2$17","Tally","root$22","root_1$18","root_2$16","root_3$16","root_4$14","root_5$13","root_6$11","root_7$9","root_8$9","root_9$5","root_10$3","root_11$3","root_12$3","root_13$2","root_14$2","root_15$2","root_16$2","root_17$2","root_18$2","root_19$1","root_20$1","root_21$1","root_22$1","root_23$1","root_24$1","root_25$1","root_26$1","root_27$1","OrganizationPage","roleOf","member","lastOwner","roleOptions","setRole","removeOf","BUILT_IN","providers","idle","handing","naming","holding","revoking","plain","counts","run","openAdding","custom","addRole","dropRole","rename","map","parts","handable","pickProvider","handOver","handBack","setPolicy","fragment_18","fragment_21","d_1","root$21","root_1$17","root_2$15","root_3$15","root_4$13","root_5$12","root_6$10","root_7$8","root_8$8","root_9$4","DomainsSection","domain","host","providerOptions","proven","check","route","serve","root$20","root_1$16","root_2$14","root_3$14","GroupsSection","create","root$19","root_1$15","root_2$13","root_3$13","root_4$12","root_5$11","root_6$9","root_7$7","root_8$7","SettingsPage","RETENTION","days","BADGE","chooseLogo","stage","activate","discard","root$18","root_1$14","root_2$12","root_3$12","root_4$11","root_5$10","BarChart","peak","point","step","width","sum","hovered","share","bar","height","y","radius","x","ticks","figure","figcaption","rect","tick","caption","th_1","tr_1","root$17","Loader","root$16","root_1$13","root_2$11","root_3$11","root_4$10","root_5$9","root_6$8","root_7$6","root_8$6","root_9$3","OverviewPage","SPANS","MARK","SKIPPED","skipped","skip","needs","starting","plotted","need","activity","root$15","ActivityParts","root$14","root_1$12","root_2$10","root_3$10","root_4$9","root_5$8","root_6$7","ActivityPage","exporting","today","range","grave","about","actorId","narrowed","describe","only","worrying","download","$7","protocolName","protocol","secretMissing","providerMarks","root$13","root_1$11","root_2$9","root_3$9","root_4$8","root_5$7","ProvidersPage","root_1$10","root$12","root_2$8","root_3$8","root_4$7","root_5$6","root_6$6","root_7$5","root_8$5","root_9$2","root_10$2","root_11$2","root_12$2","root_13$1","root_14$1","root_15$1","root_16$1","root_17$1","root_18$1","root_19","root_20","root_21","root_22","root_23","root_24","root_25","root_26","root_27","root_28","ProviderPage","give","callbackUrl","spEntityId","setup","variable","ASKED","NAME_ID_FORMATS","mcp","oidc","oauth2","signsSecret","needsSecret","signIn","fragment_26","origin","fragment_31","MAPPED","PRESETS","ARGUMENTS","extra","passed","CREATE_EXTRA","CREATE","UPDATE","drafted","connected","baseline","dirty","generic","trimmed","words","params","metadataFields","register","complete","consequent_29","fragment_39","fragment_41","fragment_42","fragment_45","consequent_30","consequent_31","fragment_52","consequent_32","consequent_33","consequent_34","consequent_35","consequent_36","consequent_37","fragment_58","node_61","consequent_39","node_62","consequent_38","node_63","consequent_40","root$11","root_1$9","root_2$7","root_3$7","root_4$6","root_5$5","root_6$5","root_7$4","root_8$4","root_9$1","root_10$1","root_11$1","root_12$1","MessageSending","editing","testing","services","serviceOf","forKind","blankConfig","service","pick","edit","sender","config","makePrimary","test","root$10","root_1$8","MailTemplate","message","signature","names","root$9","root_1$7","root_2$6","root_3$6","root_4$5","root_5$4","root_6$4","root_7$3","root_8$3","MessageTemplates","GROUPS","templated","version","showing","fit","frame","previews","preview","templates","template","journey","optgroup","article","iframe","pre","root$8","MessagesPage","root$7","root_1$6","root_2$5","root_3$5","root_4$4","root_5$3","root_6$3","root_7$2","root_8$2","StreamsPage","stream","root$6","root_1$5","root_2$4","root_3$4","SignInRules","SUSPEND_AFTER","DELETE_AFTER","agents","networks","deleteAfter","root$5","root_1$4","root_2$3","root_3$3","root_4$3","root_5$2","root_6$2","root_7$1","root_8$1","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","PoliciesPage","ARGS","PASS","HOUR","LIFETIMES","IDLE","SCORES","score","WORK","offeredWork","labelled","FIRST","SECOND","ACCOUNT_FIELDS","BLANK","signingProviders","d_2","$$array_5","$$array_6","option_3_value","select_4","$$array_7","select_5","$$array_8","option_5","option_5_value","select_6","$$array_9","option_6","option_6_value","$8","$9","$10","$11","$12","$13","$14","$15","$16","fragment_20","root$4","root_1$3","root_2$2","root_3$2","root_4$2","LdapSection","issued","issue","credential","passwordOnly","dt_1","dd_1","code_3","code_4","root$3","root_1$2","root_2$1","root_3$1","root_4$1","root_5$1","root_6$1","ProvisioningSection","lifetime","root$2","DirectoryPage","root$1","root_1$1","SettingsShell","TABS","unpair","tab","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","App","api","phase","levels","NAV","SETTINGS","REPAIRED","stale","start","ready","countWaiting","waitingLabel","current","inSettings","signedInAs","retry","main","main_1","nav_1","icon","svg_1"],"sources":["../../../../web/dist/pkce.js","../../../../web/dist/dpop.js","../../../../web/dist/types.js","../../../../web/dist/jwt.js","../../../../web/dist/browser.js","../../../../server/app/frontend/manage/lib/copy.js","../../../../server/app/frontend/manage/lib/pairing.js","../../../../server/app/frontend/manage/lib/api.svelte.js","../../../../server/app/frontend/manage/lib/router.svelte.js","../../../../server/app/frontend/manage/ui/Empty.svelte","../../../../server/app/frontend/manage/ui/Link.svelte","../../../../server/app/frontend/manage/ui/Spinner.svelte","../../../../server/app/frontend/manage/ui/Marks.svelte","../../../../server/app/frontend/manage/lib/marks.js","../../../../server/app/frontend/manage/lib/pages.svelte.js","../../../../server/app/frontend/manage/ui/Pager.svelte","../../../../server/app/frontend/manage/lib/feedback.svelte.js","../../../../server/app/frontend/manage/lib/format.js","../../../../server/app/frontend/manage/ui/Tip.svelte","../../../../server/app/frontend/manage/ui/Section.svelte","../../../../server/app/frontend/manage/ui/Row.svelte","../../../../server/app/frontend/manage/ui/Search.svelte","../../../../server/app/frontend/manage/ui/Table.svelte","../../../../server/app/frontend/manage/Devices.svelte","../../../../server/app/frontend/manage/ScopesEditor.svelte","../../../../server/app/frontend/manage/ui/Field.svelte","../../../../server/app/frontend/manage/ui/Notices.svelte","../../../../server/app/frontend/manage/ui/Page.svelte","../../../../server/app/frontend/manage/ActorsPage.svelte","../../../../server/app/frontend/manage/Connections.svelte","../../../../server/app/frontend/manage/Consents.svelte","../../../../server/app/frontend/manage/lib/events.js","../../../../server/app/frontend/manage/Events.svelte","../../../../server/app/frontend/manage/Presence.svelte","../../../../server/app/frontend/manage/Tokens.svelte","../../../../server/app/frontend/manage/ui/Parts.svelte","../../../../server/app/frontend/manage/ActorPage.svelte","../../../../server/app/frontend/manage/ui/Facts.svelte","../../../../server/app/frontend/manage/DevicePage.svelte","../../../../server/app/frontend/manage/ui/ClientLogo.svelte","../../../../server/app/frontend/manage/ui/Select.svelte","../../../../server/app/frontend/manage/ui/Switch.svelte","../../../../server/app/frontend/manage/ClientsPage.svelte","../../../../server/app/frontend/manage/lib/policies.js","../../../../server/app/frontend/manage/Namespaces.svelte","../../../../server/app/frontend/manage/ui/Lines.svelte","../../../../server/app/frontend/manage/ClientPage.svelte","../../../../server/app/frontend/manage/OrganizationCell.svelte","../../../../server/app/frontend/manage/OrganizationHeadcount.svelte","../../../../server/app/frontend/manage/OrganizationsPage.svelte","../../../../server/app/frontend/manage/ui/Tally.svelte","../../../../server/app/frontend/manage/OrganizationPage.svelte","../../../../server/app/frontend/manage/DomainsSection.svelte","../../../../server/app/frontend/manage/GroupsSection.svelte","../../../../server/app/frontend/manage/SettingsPage.svelte","../../../../server/app/frontend/manage/ui/BarChart.svelte","../../../../server/app/frontend/manage/ui/Loader.svelte","../../../../server/app/frontend/manage/OverviewPage.svelte","../../../../server/app/frontend/manage/ActivityParts.svelte","../../../../server/app/frontend/manage/ActivityPage.svelte","../../../../server/app/frontend/manage/lib/providers.js","../../../../server/app/frontend/manage/ProvidersPage.svelte","../../../../server/app/frontend/manage/ProviderPage.svelte","../../../../server/app/frontend/manage/MessageSending.svelte","../../../../server/app/frontend/manage/MailTemplate.svelte","../../../../server/app/frontend/manage/MessageTemplates.svelte","../../../../server/app/frontend/manage/MessagesPage.svelte","../../../../server/app/frontend/manage/StreamsPage.svelte","../../../../server/app/frontend/manage/SignInRules.svelte","../../../../server/app/frontend/manage/PoliciesPage.svelte","../../../../server/app/frontend/manage/LdapSection.svelte","../../../../server/app/frontend/manage/ProvisioningSection.svelte","../../../../server/app/frontend/manage/DirectoryPage.svelte","../../../../server/app/frontend/manage/SettingsShell.svelte","../../../../server/app/frontend/manage/App.svelte","../../../../server/app/frontend/entrypoints/manage.js"],"sourcesContent":["const ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~\";\nexport function random(length = 64) {\n const bytes = new Uint8Array(length);\n crypto.getRandomValues(bytes);\n let value = \"\";\n for (const byte of bytes)\n value += ALPHABET[byte % ALPHABET.length];\n return value;\n}\nexport function encode(bytes) {\n let binary = \"\";\n for (const byte of new Uint8Array(bytes))\n binary += String.fromCharCode(byte);\n return btoa(binary)\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n}\nexport async function challenge(verifier) {\n const digest = await crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(verifier));\n return encode(digest);\n}\nexport const method = \"S256\";\n","import { encode, random } from \"./pkce.js\";\nexport async function createDpopKey() {\n const pair = await crypto.subtle.generateKey({ name: \"ECDSA\", namedCurve: \"P-256\" }, false, [\"sign\", \"verify\"]);\n const exported = await crypto.subtle.exportKey(\"jwk\", pair.publicKey);\n return {\n privateKey: pair.privateKey,\n jwk: { kty: exported.kty, crv: exported.crv, x: exported.x, y: exported.y },\n };\n}\nconst text = (value) => encode(new TextEncoder().encode(JSON.stringify(value)).buffer);\nexport async function dpopProof(key, method, url, accessToken) {\n const target = new URL(url);\n const header = { typ: \"dpop+jwt\", alg: \"ES256\", jwk: key.jwk };\n const payload = {\n jti: random(32),\n htm: method.toUpperCase(),\n htu: `${target.origin}${target.pathname}`,\n iat: Math.floor(Date.now() / 1000),\n };\n if (accessToken) {\n payload.ath = encode(await crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(accessToken)));\n }\n const signing = `${text(header)}.${text(payload)}`;\n const signature = await crypto.subtle.sign({ name: \"ECDSA\", hash: \"SHA-256\" }, key.privateKey, new TextEncoder().encode(signing));\n return `${signing}.${encode(signature)}`;\n}\n","export class MasksError extends Error {\n code;\n description;\n status;\n constructor(code, description, status) {\n super(description ? `${code}: ${description}` : code);\n this.name = \"MasksError\";\n this.code = code;\n this.description = description;\n this.status = status;\n }\n}\nexport class LoginRequired extends MasksError {\n}\nexport class ConsentRequired extends MasksError {\n}\nexport class AccessDenied extends MasksError {\n}\nexport class InvalidGrant extends MasksError {\n}\nexport class InvalidToken extends MasksError {\n}\nexport class InvalidIssuer extends MasksError {\n}\nconst KINDS = {\n login_required: LoginRequired,\n interaction_required: LoginRequired,\n consent_required: ConsentRequired,\n access_denied: AccessDenied,\n invalid_grant: InvalidGrant,\n invalid_token: InvalidToken,\n invalid_issuer: InvalidIssuer,\n};\nexport function masksError(code, description, status) {\n const Kind = KINDS[code] ?? MasksError;\n const error = new Kind(code, description, status);\n error.name = Kind.name;\n return error;\n}\n","import { masksError } from \"./types.js\";\nconst HASHES = {\n RS256: \"SHA-256\",\n RS384: \"SHA-384\",\n RS512: \"SHA-512\",\n};\nconst ALGORITHM = \"RSASSA-PKCS1-v1_5\";\nfunction bytes(part) {\n const padded = part.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const binary = atob(padded.padEnd(padded.length + ((4 - (padded.length % 4)) % 4), \"=\"));\n const out = new Uint8Array(new ArrayBuffer(binary.length));\n for (let index = 0; index < binary.length; index++) {\n out[index] = binary.charCodeAt(index);\n }\n return out;\n}\nfunction json(part) {\n try {\n return JSON.parse(new TextDecoder().decode(bytes(part)));\n }\n catch {\n throw masksError(\"invalid_token\", \"the id token is not a JWT\");\n }\n}\nfunction audiences(value) {\n if (Array.isArray(value))\n return value.map(String);\n return value === undefined || value === null ? [] : [String(value)];\n}\nexport async function verifyIdToken(token, { issuer, audience, nonce, keyFor, leeway = 60 }) {\n const [rawHeader, rawPayload, rawSignature, ...rest] = token.split(\".\");\n if (!rawHeader || !rawPayload || !rawSignature || rest.length > 0) {\n throw masksError(\"invalid_token\", \"the id token is not a JWT\");\n }\n const header = json(rawHeader);\n if (header.typ !== undefined && String(header.typ).toUpperCase() !== \"JWT\") {\n throw masksError(\"invalid_token\", `the id token is typed ${header.typ}, which is not an id token`);\n }\n const hash = HASHES[String(header.alg)];\n if (!hash) {\n throw masksError(\"invalid_token\", `the id token is signed with ${header.alg}, which this client cannot verify`);\n }\n const key = await crypto.subtle.importKey(\"jwk\", { ...(await keyFor(String(header.kid))), alg: String(header.alg) }, { name: ALGORITHM, hash }, false, [\"verify\"]);\n const signed = await crypto.subtle.verify(ALGORITHM, key, bytes(rawSignature), new TextEncoder().encode(`${rawHeader}.${rawPayload}`));\n if (!signed) {\n throw masksError(\"invalid_token\", \"the id token signature does not verify\");\n }\n const claims = json(rawPayload);\n const now = Math.floor(Date.now() / 1000);\n if (String(claims.iss ?? \"\").replace(/\\/$/, \"\") !== issuer) {\n throw masksError(\"invalid_token\", `the id token was issued by ${claims.iss}`);\n }\n if (!audiences(claims.aud).includes(audience)) {\n throw masksError(\"invalid_token\", \"the id token was issued for another client\");\n }\n if (typeof claims.exp === \"number\" && now - leeway >= claims.exp) {\n throw masksError(\"invalid_token\", \"the id token has expired\");\n }\n if (typeof claims.iat === \"number\" && claims.iat - leeway > now) {\n throw masksError(\"invalid_token\", \"the id token was issued in the future\");\n }\n if (claims.nonce !== nonce) {\n throw masksError(\"invalid_nonce\", \"the id token was issued for another request\");\n }\n return claims;\n}\n","import { createDpopKey, dpopProof } from \"./dpop.js\";\nimport { verifyIdToken } from \"./jwt.js\";\nimport { challenge, method, random } from \"./pkce.js\";\nimport { masksError, } from \"./types.js\";\nconst PENDING = \"masks:pending\";\nfunction list(value) {\n if (!value)\n return [];\n return Array.isArray(value) ? value : value.split(/\\s+/).filter(Boolean);\n}\nexport function createBrowserClient(options) {\n const issuer = options.issuer.replace(/\\/$/, \"\");\n const call = options.fetch ?? globalThis.fetch.bind(globalThis);\n const store = options.storage ?? globalThis.sessionStorage;\n const scope = list(options.scope ?? [\"openid\", \"profile\", \"email\"]);\n const resources = list(options.resource);\n let document = null;\n let held = null;\n let claims = null;\n let keys = null;\n let refreshing = null;\n let dpopKey = null;\n const proved = async (method, url, accessToken) => {\n if (!options.dpop)\n return {};\n dpopKey ??= createDpopKey();\n return { DPoP: await dpopProof(await dpopKey, method, url, accessToken) };\n };\n let generation = 0;\n const discover = async () => {\n if (document)\n return document;\n const response = await call(`${issuer}/.well-known/openid-configuration`, {\n headers: { Accept: \"application/json\" },\n });\n if (!response.ok) {\n throw masksError(\"invalid_issuer\", `${issuer} answered ${response.status}`, response.status);\n }\n const found = (await response.json());\n if (found.issuer?.replace(/\\/$/, \"\") !== issuer) {\n throw masksError(\"invalid_issuer\", `${issuer} publishes a document naming ${found.issuer}`);\n }\n document = found;\n return found;\n };\n const fetchKeys = async (revalidate) => {\n const { jwks_uri } = await discover();\n if (!jwks_uri) {\n throw masksError(\"invalid_issuer\", `${issuer} publishes no jwks_uri, so an id token cannot be verified`);\n }\n const response = await call(jwks_uri, {\n headers: { Accept: \"application/json\" },\n ...(revalidate ? { cache: \"no-cache\" } : {}),\n });\n if (!response.ok) {\n throw masksError(\"invalid_issuer\", `${jwks_uri} answered ${response.status}`, response.status);\n }\n const found = (await response.json());\n return Object.fromEntries((found.keys ?? [])\n .filter((jwk) => jwk.kid && (!jwk.use || jwk.use === \"sig\"))\n .map((jwk) => [jwk.kid, jwk]));\n };\n const keyFor = async (kid, refresh = false) => {\n if (refresh || !keys)\n keys = await fetchKeys(refresh);\n const found = keys[kid];\n if (found)\n return found;\n if (!refresh)\n return keyFor(kid, true);\n throw masksError(\"invalid_token\", `${issuer} publishes no key ${kid}`);\n };\n const post = async (body) => {\n const started = generation;\n const { token_endpoint } = await discover();\n const response = await call(token_endpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n Accept: \"application/json\",\n ...(await proved(\"POST\", token_endpoint)),\n },\n body: new URLSearchParams(body).toString(),\n });\n const payload = (await response.json().catch(() => ({})));\n if (!response.ok) {\n throw masksError(payload.error ?? `http_${response.status}`, payload.error_description, response.status);\n }\n if (started !== generation) {\n throw masksError(\"invalid_grant\", \"the client signed out while this request was in flight\");\n }\n held = {\n access_token: payload.access_token,\n id_token: payload.id_token,\n refresh_token: payload.refresh_token,\n token_type: payload.token_type ?? \"Bearer\",\n scope: payload.scope ?? \"\",\n expires_in: Number(payload.expires_in ?? 0),\n obtained_at: Math.floor(Date.now() / 1000),\n };\n return held;\n };\n const authorizeUrl = async ({ returnTo, prompt, organization = options.organization, } = {}) => {\n const { authorization_endpoint } = await discover();\n const verifier = random();\n const waiting = {\n state: random(24),\n nonce: scope.includes(\"openid\") ? random(24) : \"\",\n verifier,\n returnTo: returnTo ?? `${location.pathname}${location.search}`,\n ...(organization ? { organization } : {}),\n };\n store.setItem(PENDING, JSON.stringify(waiting));\n const query = new URLSearchParams([\n [\"response_type\", \"code\"],\n [\"client_id\", options.clientId],\n [\"redirect_uri\", options.redirectUri],\n [\"scope\", scope.join(\" \")],\n [\"state\", waiting.state],\n [\"code_challenge\", await challenge(verifier)],\n [\"code_challenge_method\", method],\n ]);\n if (waiting.nonce)\n query.append(\"nonce\", waiting.nonce);\n for (const value of resources)\n query.append(\"resource\", value);\n if (prompt)\n query.append(\"prompt\", prompt);\n if (organization)\n query.append(\"organization\", organization);\n return `${authorization_endpoint}?${query.toString()}`;\n };\n const avatarUrl = async (subject, { style = \"identicon\", size } = {}) => {\n const { avatar_endpoint, avatar_styles_supported } = await discover();\n if (!avatar_endpoint) {\n throw masksError(\"invalid_issuer\", `${issuer} publishes no avatar_endpoint`);\n }\n if (avatar_styles_supported && !avatar_styles_supported.includes(style)) {\n throw masksError(\"invalid_style\", `${issuer} does not serve ${style} avatars`);\n }\n const base = `${avatar_endpoint}/${encodeURIComponent(subject)}/${style}`;\n return size ? `${base}?size=${size}` : base;\n };\n const expired = (leeway = 30) => {\n if (!held)\n return true;\n return Date.now() / 1000 + leeway >= held.obtained_at + held.expires_in;\n };\n const renew = async () => {\n if (!held?.refresh_token) {\n throw masksError(\"invalid_grant\", \"no refresh token is held\");\n }\n const previous = held.refresh_token;\n const body = [\n [\"grant_type\", \"refresh_token\"],\n [\"refresh_token\", previous],\n [\"client_id\", options.clientId],\n ];\n for (const value of resources)\n body.push([\"resource\", value]);\n const tokens = await post(body);\n tokens.refresh_token ??= previous;\n return tokens;\n };\n const refresh = async () => {\n refreshing ??= renew().finally(() => {\n refreshing = null;\n });\n return await refreshing;\n };\n const revoke = async (token) => {\n const { revocation_endpoint } = await discover();\n if (!revocation_endpoint)\n return;\n await call(revocation_endpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams([\n [\"token\", token],\n [\"token_type_hint\", \"refresh_token\"],\n [\"client_id\", options.clientId],\n ]).toString(),\n });\n };\n return {\n discover,\n authorizeUrl,\n avatarUrl,\n async authorize(opts = {}) {\n window.location.assign(await authorizeUrl(opts));\n },\n pending() {\n return store.getItem(PENDING) !== null;\n },\n async callback(url = window.location.href) {\n const query = new URL(url).searchParams;\n const raw = store.getItem(PENDING);\n store.removeItem(PENDING);\n if (query.get(\"error\")) {\n throw masksError(query.get(\"error\"), query.get(\"error_description\") ?? undefined);\n }\n if (!raw) {\n throw masksError(\"invalid_state\", \"this browser has no authorization in flight\");\n }\n const waiting = JSON.parse(raw);\n if (query.get(\"state\") !== waiting.state) {\n throw masksError(\"invalid_state\", \"the callback did not match this browser\");\n }\n const code = query.get(\"code\");\n if (!code) {\n throw masksError(\"invalid_request\", \"the callback carried no code\");\n }\n const body = [\n [\"grant_type\", \"authorization_code\"],\n [\"code\", code],\n [\"client_id\", options.clientId],\n [\"redirect_uri\", options.redirectUri],\n [\"code_verifier\", waiting.verifier],\n ];\n for (const value of resources)\n body.push([\"resource\", value]);\n const tokens = await post(body);\n if (waiting.nonce) {\n if (!tokens.id_token) {\n held = null;\n throw masksError(\"invalid_token\", \"an id token was asked for and the issuer returned none\");\n }\n try {\n claims = await verifyIdToken(tokens.id_token, {\n issuer,\n audience: options.clientId,\n nonce: waiting.nonce,\n keyFor,\n });\n }\n catch (failure) {\n held = null;\n claims = null;\n throw failure;\n }\n const named = claims?.org?.key;\n if (waiting.organization && named && named !== waiting.organization) {\n held = null;\n claims = null;\n throw masksError(\"invalid_token\", `the id token does not name the organization ${waiting.organization}`);\n }\n }\n return { tokens, identity: claims, returnTo: waiting.returnTo };\n },\n identity() {\n return claims;\n },\n organization() {\n return claims?.org ?? null;\n },\n organizations() {\n return claims?.orgs ?? [];\n },\n async switchOrganization(key, opts = {}) {\n window.location.assign(await authorizeUrl({ ...opts, organization: key }));\n },\n avatars() {\n return claims?.[\"masks:avatars\"] ?? null;\n },\n async photo(subject = claims?.sub) {\n if (!subject || !held)\n return null;\n const response = await call(await avatarUrl(subject, { style: \"photo\" }), {\n headers: {\n Authorization: `${held.token_type} ${held.access_token}`,\n Accept: \"image/*\",\n },\n });\n return response.ok ? await response.blob() : null;\n },\n refresh,\n async fetch(url, init = {}) {\n if (held?.refresh_token && expired())\n await refresh();\n const access = held?.access_token;\n const headers = new Headers(init.headers);\n if (access && held) {\n headers.set(\"Authorization\", `${held.token_type} ${access}`);\n for (const [name, value] of Object.entries(await proved(init.method ?? \"GET\", url, access))) {\n headers.set(name, value);\n }\n }\n return await call(url, { ...init, headers });\n },\n async proof(method, url) {\n return (await proved(method, url, held?.access_token)).DPoP ?? null;\n },\n async freshAccessToken(leeway = 30) {\n if (held?.refresh_token && expired(leeway))\n await refresh();\n return held?.access_token ?? null;\n },\n accessToken() {\n return held?.access_token ?? null;\n },\n tokens() {\n return held;\n },\n authorization() {\n return held ? `${held.token_type} ${held.access_token}` : null;\n },\n expired,\n async logout({ everywhere = false, postLogoutRedirectUri } = {}) {\n const leaving = held;\n generation += 1;\n held = null;\n claims = null;\n refreshing = null;\n store.removeItem(PENDING);\n if (leaving?.refresh_token) {\n await revoke(leaving.refresh_token).catch(() => undefined);\n }\n if (!everywhere)\n return;\n const { end_session_endpoint } = await discover();\n if (!end_session_endpoint) {\n throw masksError(\"invalid_issuer\", `${issuer} publishes no end_session_endpoint`);\n }\n const query = new URLSearchParams([[\"client_id\", options.clientId]]);\n if (leaving?.id_token)\n query.append(\"id_token_hint\", leaving.id_token);\n if (postLogoutRedirectUri) {\n query.append(\"post_logout_redirect_uri\", postLogoutRedirectUri);\n }\n window.location.assign(`${end_session_endpoint}?${query.toString()}`);\n },\n };\n}\n","const PLACEHOLDER = /%\\{(\\w+)\\}/g;\n\nlet held = {};\nlet plurals = new Intl.PluralRules(\"en\");\n\nexport function useCopy(copy, locale = \"en\") {\n held = copy ?? {};\n plurals = new Intl.PluralRules(locale);\n}\n\nfunction lookup(key) {\n return key\n .split(\".\")\n .reduce((found, part) => (found == null ? undefined : found[part]), held);\n}\n\nfunction fill(text, values) {\n return text.replace(PLACEHOLDER, (whole, name) =>\n values && Object.hasOwn(values, name) ? String(values[name]) : whole,\n );\n}\n\nexport function t(key, values) {\n const found = lookup(key);\n\n if (typeof found === \"string\") return fill(found, values);\n\n if (found && typeof found === \"object\" && values && \"count\" in values) {\n const form = found[plurals.select(Number(values.count))] ?? found.other;\n\n if (typeof form === \"string\") return fill(form, values);\n }\n\n return key;\n}\n","import { t } from \"./copy.js\";\n\nconst KEY = \"masks:manage:client\";\n\nexport const SCOPE = [\n \"openid\",\n \"profile\",\n \"email\",\n \"masks:manage\",\n \"masks:manage:security\",\n \"masks:manage:support\",\n \"masks:manage:read\",\n];\n\nfunction held(issuer) {\n try {\n return JSON.parse(localStorage.getItem(KEY) || \"null\")?.[issuer] || null;\n } catch {\n return null;\n }\n}\n\nfunction keep(issuer, clientId) {\n const all = JSON.parse(localStorage.getItem(KEY) || \"{}\");\n\n all[issuer] = clientId;\n localStorage.setItem(KEY, JSON.stringify(all));\n}\n\nexport function clientId(boot) {\n return held(boot.issuer);\n}\n\nexport function forget(boot) {\n const all = JSON.parse(localStorage.getItem(KEY) || \"{}\");\n\n delete all[boot.issuer];\n localStorage.setItem(KEY, JSON.stringify(all));\n}\n\nexport function callbackUri(boot) {\n return `${location.origin}${boot.root}/callback`;\n}\n\nexport function handshakeUrl(boot) {\n const query = new URLSearchParams([\n [\"client_name\", `Manage ${boot.tenant.name}`],\n [\"resource\", boot.resource],\n [\"scope\", SCOPE.join(\" \")],\n [\"return_to\", `${location.origin}${boot.root}`],\n [\"token_endpoint_auth_method\", \"none\"],\n [\"redirect_uris\", callbackUri(boot)],\n ]);\n\n return `${boot.issuer}/handshake?${query.toString()}`;\n}\n\nexport async function redeem(boot, token) {\n const response = await fetch(`${boot.issuer}/register`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify({\n client_name: `Manage ${boot.tenant.name}`,\n redirect_uris: [callbackUri(boot)],\n token_endpoint_auth_method: \"none\",\n }),\n });\n\n const body = await response.json().catch(() => ({}));\n\n if (!response.ok) {\n throw new Error(\n body.error_description || body.error || t(\"pairing.registration_failed\"),\n );\n }\n\n if (body.client_secret) {\n throw new Error(t(\"pairing.secret_issued\"));\n }\n\n keep(boot.issuer, body.client_id);\n\n return body.client_id;\n}\n","import { createBrowserClient } from \"@masks/client\";\nimport { t } from \"./copy.js\";\nimport { callbackUri, clientId, forget, SCOPE } from \"./pairing.js\";\n\nfunction detach(variables) {\n const files = new Map();\n\n const walk = (value, path) => {\n if (value instanceof Blob) {\n files.set(path, value);\n return null;\n }\n\n if (Array.isArray(value))\n return value.map((one, at) => walk(one, `${path}.${at}`));\n\n if (value?.constructor === Object) {\n return Object.fromEntries(\n Object.entries(value).map(([key, one]) => [\n key,\n walk(one, `${path}.${key}`),\n ]),\n );\n }\n\n return value;\n };\n\n return { held: walk(variables, \"variables\"), files };\n}\n\nexport function createApi(boot) {\n const state = $state({\n ready: false,\n identity: null,\n failure: null,\n });\n\n let client = null;\n\n const build = () => {\n const held = clientId(boot);\n\n if (!held) return null;\n\n client ||= createBrowserClient({\n issuer: boot.issuer,\n clientId: held,\n redirectUri: callbackUri(boot),\n scope: SCOPE,\n resource: boot.resource,\n });\n\n return client;\n };\n\n const authorization = async () => {\n const held = build();\n\n if (!held) throw new Error(t(\"api.unregistered\"));\n\n if (held.expired(30)) await held.refresh();\n\n return held.authorization();\n };\n\n return {\n state,\n\n paired() {\n return Boolean(clientId(boot));\n },\n\n signedIn() {\n return Boolean(build()?.accessToken());\n },\n\n async authorize(returnTo) {\n await build().authorize({ returnTo });\n },\n\n async callback() {\n const answer = await build().callback();\n\n state.identity = answer.identity;\n state.ready = true;\n\n return answer;\n },\n\n async signOut() {\n const held = build();\n\n state.identity = null;\n\n if (!held) return null;\n\n const idToken = held.tokens()?.id_token;\n const document = await held.discover().catch(() => null);\n\n held.logout();\n\n if (!document?.end_session_endpoint) return null;\n\n const query = new URLSearchParams({\n client_id: clientId(boot),\n post_logout_redirect_uri: `${location.origin}${boot.root}`,\n });\n\n if (idToken) query.set(\"id_token_hint\", idToken);\n\n return `${document.end_session_endpoint}?${query}`;\n },\n\n unpair() {\n build()?.logout();\n forget(boot);\n client = null;\n },\n\n async query(document, variables = {}) {\n const { held, files } = detach(variables);\n const headers = {\n Accept: \"application/json\",\n Authorization: await authorization(),\n };\n let sent;\n\n if (files.size) {\n sent = new FormData();\n\n sent.append(\n \"operations\",\n JSON.stringify({ query: document, variables: held }),\n );\n sent.append(\n \"map\",\n JSON.stringify(\n Object.fromEntries(\n [...files.keys()].map((path, at) => [at, [path]]),\n ),\n ),\n );\n\n [...files.values()].forEach((file, at) => {\n sent.append(String(at), file);\n });\n } else {\n headers[\"Content-Type\"] = \"application/json\";\n sent = JSON.stringify({ query: document, variables });\n }\n\n const response = await fetch(boot.graphql, {\n method: \"POST\",\n headers,\n body: sent,\n });\n\n const body = await response.json().catch(() => ({}));\n\n if (response.status === 401 || response.status === 403) {\n throw new Error(\n body.error_description || body.error || t(\"api.refused\"),\n );\n }\n\n if (body.errors?.length) {\n throw new Error(body.errors.map((one) => one.message).join(\"; \"));\n }\n\n return body.data;\n },\n };\n}\n","import { getContext, setContext } from \"svelte\";\n\nconst ROUTER = Symbol(\"router\");\n\nexport function createRouter(root) {\n const state = $state({ path: location.pathname, search: location.search });\n\n const settle = () => {\n state.path = location.pathname;\n state.search = location.search;\n };\n\n addEventListener(\"popstate\", settle);\n\n return {\n state,\n\n get segments() {\n return state.path.slice(root.length).split(\"/\").filter(Boolean);\n },\n\n get query() {\n return new URLSearchParams(state.search);\n },\n\n href(to) {\n return `${root}${to}`;\n },\n\n go(to) {\n history.pushState({}, \"\", `${root}${to}`);\n settle();\n scrollTo({ top: 0 });\n },\n\n replace(to) {\n history.replaceState({}, \"\", `${root}${to}`);\n settle();\n },\n };\n}\n\nexport function provideRouter(router) {\n setContext(ROUTER, router);\n}\n\nexport function useRouter() {\n return getContext(ROUTER);\n}\n","<script>\n let { children } = $props();\n</script>\n\n<div class=\"sheet px-6 py-14 text-center\">\n <p class=\"mx-auto max-w-sm text-sm opacity-85\">{@render children()}</p>\n</div>\n","<script>\n import { useRouter } from \"../lib/router.svelte.js\";\n\n let { to, class: klass = \"link link-hover\", children, ...rest } = $props();\n\n const router = useRouter();\n\n function follow(event) {\n if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n if (event.button !== 0) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n router.go(to);\n }\n</script>\n\n<a {...rest} class={klass} href={router.href(to)} onclick={follow}>{@render children()}</a>\n","<script>\n import { t } from \"../lib/copy.js\";\n let { label = t(\"ui.loading\") } = $props();\n</script>\n\n<div class=\"grid place-items-center py-16\" role=\"status\">\n <span class=\"loading loading-spinner\"></span>\n <span class=\"sr-only\">{label}</span>\n</div>\n","<script>\n let { marks } = $props();\n\n const SHAPES = {\n manager: '<path d=\"M10 2.75 16 5v4.6c0 3.7-2.5 6.4-6 7.65-3.5-1.25-6-3.95-6-7.65V5z\"/>',\n key: '<circle cx=\"6.75\" cy=\"10\" r=\"3.25\"/><path d=\"M10 10h7.25M14.5 10v2.5M17.25 10v2\"/>',\n invited: '<rect x=\"2.75\" y=\"4.75\" width=\"14.5\" height=\"10.5\" rx=\"1.5\"/><path d=\"m3.25 5.5 6.75 5.25 6.75-5.25\"/>',\n unconfirmed: '<circle cx=\"10\" cy=\"10\" r=\"7\"/><path d=\"M10 6.25v4.5M10 13.75v.01\"/>',\n waiting: '<circle cx=\"10\" cy=\"10\" r=\"7\"/><path d=\"M10 6.25V10l2.75 1.75\"/>',\n help: '<circle cx=\"10\" cy=\"10\" r=\"7\"/><path d=\"M7.9 7.9a2.15 2.15 0 1 1 3 1.95c-.55.3-.9.75-.9 1.3v.35M10 13.75v.01\"/>',\n suspended: '<circle cx=\"10\" cy=\"10\" r=\"7\"/><path d=\"M8.1 7.25v5.5M11.9 7.25v5.5\"/>',\n blocked: '<circle cx=\"10\" cy=\"10\" r=\"7\"/><path d=\"m5.05 5.05 9.9 9.9\"/>',\n dynamic: '<path d=\"M7 3.25v3.5M13 3.25v3.5\"/><rect x=\"4.75\" y=\"6.75\" width=\"10.5\" height=\"5.5\" rx=\"1.5\"/><path d=\"M10 12.25v4.5\"/>',\n owns: '<circle cx=\"8\" cy=\"7\" r=\"3\"/><path d=\"M2.75 16.25c.6-2.9 2.75-4.5 5.25-4.5s4.65 1.6 5.25 4.5M15.5 6.5v5M13 9h5\"/>',\n signals: '<circle cx=\"10\" cy=\"10\" r=\"1.5\"/><path d=\"M6.75 13.25a4.6 4.6 0 0 1 0-6.5M13.25 6.75a4.6 4.6 0 0 1 0 6.5M4.4 15.6a7.9 7.9 0 0 1 0-11.2M15.6 4.4a7.9 7.9 0 0 1 0 11.2\"/>',\n delegates: '<path d=\"M11.5 3.75h4.75V8.5M16.25 3.75 9.5 10.5\"/><path d=\"M14.5 11.5v3.25c0 .7-.55 1.25-1.25 1.25h-8c-.7 0-1.25-.55-1.25-1.25v-8c0-.7.55-1.25 1.25-1.25H8.5\"/>',\n mail: '<rect x=\"2.75\" y=\"4.75\" width=\"14.5\" height=\"10.5\" rx=\"1.5\"/><path d=\"m3.25 5.5 6.75 5.25 6.75-5.25\"/>',\n archived: '<rect x=\"2.75\" y=\"4\" width=\"14.5\" height=\"3.5\" rx=\"1\"/><path d=\"M4.25 7.5v7.25c0 .7.55 1.25 1.25 1.25h9c.7 0 1.25-.55 1.25-1.25V7.5M8.25 10.5h3.5\"/>',\n };\n</script>\n\n{#if marks.length}\n <span class=\"marks\">\n {#each marks as [shape, label, tone] (shape)}\n <span class=\"mark mark-{tone ?? 'quiet'}\" role=\"img\" aria-label={label} title={label}>\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n {@html SHAPES[shape]}\n </svg>\n </span>\n {/each}\n </span>\n{/if}\n","import { t } from \"./copy.js\";\n\nexport const blocked = (actor) =>\n actor.devices.some((device) => device.blockedAt);\n\nexport const actorMarks = (actor) =>\n [\n actor.scopes.some((scope) => scope.startsWith(\"masks:\")) && [\n \"manager\",\n t(\"actors.marks.manager\"),\n \"primary\",\n ],\n actor.otpEnabled && [\n \"key\",\n t(\"actors.marks.second_factor\", { count: actor.backupCodesRemaining }),\n \"good\",\n ],\n !actor.activated && [\"invited\", t(\"actors.marks.invited\"), \"info\"],\n actor.email &&\n !actor.emailVerified && [\n \"unconfirmed\",\n t(\"actors.marks.unconfirmed\"),\n \"warn\",\n ],\n actor.pendingApproval && [\"waiting\", t(\"actors.marks.waiting\"), \"warn\"],\n actor.recoveryRequestedAt && [\"help\", t(\"actors.marks.help\"), \"warn\"],\n actor.suspendedAt && [\"suspended\", t(\"actors.marks.suspended\"), \"bad\"],\n blocked(actor) && [\"blocked\", t(\"actors.marks.blocked\"), \"bad\"],\n ].filter(Boolean);\n","export function createPages(size = 25) {\n const state = $state({ cursors: [null], total: null });\n\n return {\n size,\n state,\n\n get cursor() {\n return state.cursors.at(-1);\n },\n\n get first() {\n return (state.cursors.length - 1) * size + 1;\n },\n\n reset() {\n state.cursors = [null];\n },\n\n forward(cursor) {\n state.cursors = [...state.cursors, cursor];\n },\n\n back() {\n if (state.cursors.length > 1) state.cursors = state.cursors.slice(0, -1);\n },\n\n counted(total) {\n state.total = total;\n },\n };\n}\n","<script>\n import { t } from \"../lib/copy.js\";\n let { pages, shown, busy = false, onpage } = $props();\n\n const first = $derived(pages.first);\n const last = $derived(first + shown - 1);\n const total = $derived(pages.state.total);\n const earlier = $derived(pages.state.cursors.length > 1);\n const later = $derived(total === null ? shown === pages.size : last < total);\n</script>\n\n{#if shown && (earlier || later)}\n <nav class=\"pager\" aria-label={t(\"ui.pager.label\")}>\n <span class=\"hint\">\n {total === null\n ? t(\"ui.pager.range\", { first: first.toLocaleString(), last: last.toLocaleString() })\n : t(\"ui.pager.range_of\", {\n first: first.toLocaleString(),\n last: last.toLocaleString(),\n total: total.toLocaleString(),\n })}\n </span>\n\n <div class=\"join\">\n <button\n type=\"button\"\n class=\"btn btn-sm join-item\"\n disabled={busy || !earlier}\n onclick={() => onpage(\"back\")}\n >{t(\"ui.pager.previous\")}</button>\n <button\n type=\"button\"\n class=\"btn btn-sm join-item\"\n disabled={busy || !later}\n onclick={() => onpage(\"forward\")}\n >{t(\"ui.pager.next\")}</button>\n </div>\n </nav>\n{/if}\n","export function createFeedback() {\n const state = $state({ notice: null, failure: null });\n\n const clear = () => {\n state.notice = null;\n state.failure = null;\n };\n\n const blame = (thrown) => {\n state.notice = null;\n state.failure = thrown?.message ?? String(thrown);\n };\n\n return {\n state,\n clear,\n blame,\n\n say(notice) {\n state.failure = null;\n state.notice = notice;\n },\n\n async attempt(work, notice = null) {\n clear();\n\n try {\n const answer = (await work()) ?? true;\n\n if (notice) state.notice = notice;\n\n return answer;\n } catch (thrown) {\n blame(thrown);\n\n return null;\n }\n },\n };\n}\n","export const NONE = \"—\";\n\nconst formatters = new Map();\n\nfunction locale() {\n return document.documentElement.lang || undefined;\n}\n\nfunction formatter(kind, make) {\n const key = `${kind}:${locale() ?? \"\"}`;\n\n if (!formatters.has(key)) formatters.set(key, make(locale()));\n\n return formatters.get(key);\n}\n\nconst DAY = () =>\n formatter(\n \"day\",\n (lang) =>\n new Intl.DateTimeFormat(lang, {\n day: \"numeric\",\n month: \"short\",\n year: \"numeric\",\n }),\n );\n\nconst MOMENT = () =>\n formatter(\n \"moment\",\n (lang) =>\n new Intl.DateTimeFormat(lang, {\n day: \"numeric\",\n month: \"short\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n }),\n );\n\nconst RELATIVE = () =>\n formatter(\n \"relative\",\n (lang) => new Intl.RelativeTimeFormat(lang, { numeric: \"auto\" }),\n );\n\nconst STEPS = [\n [\"year\", 31536000000],\n [\"month\", 2592000000],\n [\"week\", 604800000],\n [\"day\", 86400000],\n [\"hour\", 3600000],\n [\"minute\", 60000],\n];\n\nfunction parsed(iso) {\n if (!iso) return null;\n\n const at = new Date(iso);\n\n return Number.isNaN(at.getTime()) ? null : at;\n}\n\nexport function day(iso, fallback = NONE) {\n const at = parsed(iso);\n\n return at ? DAY().format(at) : fallback;\n}\n\nexport function moment(iso, fallback = NONE) {\n const at = parsed(iso);\n\n return at ? MOMENT().format(at) : fallback;\n}\n\nexport function since(iso, fallback = NONE) {\n const at = parsed(iso);\n\n if (!at) return fallback;\n\n const gap = at.getTime() - Date.now();\n\n for (const [unit, size] of STEPS) {\n if (Math.abs(gap) >= size) {\n return RELATIVE().format(Math.round(gap / size), unit);\n }\n }\n\n return RELATIVE().format(Math.round(gap / 1000), \"second\");\n}\n\nexport function joined(values, fallback = NONE) {\n const kept = (values ?? []).filter(Boolean);\n\n return kept.length ? kept.join(\" \") : fallback;\n}\n","<script>\n import { t } from \"../lib/copy.js\";\n let { text, label = t(\"ui.more_about\") } = $props();\n\n const id = $props.id();\n</script>\n\n<span class=\"tip\">\n <button type=\"button\" class=\"tip-mark\" aria-label={label} aria-describedby={id}>?</button>\n <span class=\"tip-body\" role=\"tooltip\" {id}>{text}</span>\n</span>\n","<script>\n import { t } from \"../lib/copy.js\";\n import Tip from \"./Tip.svelte\";\n\n let { title = null, lede = null, help = null, row = false, actions, children } = $props();\n</script>\n\n<section class=\"section\" class:section-row={row}>\n {#if title || lede || actions}\n <div class=\"section-head\">\n <div class=\"flex min-w-0 flex-col gap-1.5\">\n {#if title}\n <div class=\"flex items-center gap-2\">\n <h2 class=\"subhead\">{title}</h2>\n {#if help}<Tip text={help} label={t(\"ui.about\", { title: title.toLowerCase() })} />{/if}\n </div>\n {/if}\n {#if lede}<p class=\"deck-sm\">{lede}</p>{/if}\n </div>\n\n {#if actions}\n <div class=\"flex min-w-0 max-w-full flex-wrap items-center gap-2\">{@render actions()}</div>\n {/if}\n </div>\n {/if}\n\n <div class=\"section-body\">{@render children()}</div>\n</section>\n","<script>\n import { useRouter } from \"../lib/router.svelte.js\";\n\n let { to, children } = $props();\n\n const router = useRouter();\n\n function follow(event) {\n if (event.target.closest(\"a, button, input, label\")) return;\n if (getSelection()?.toString()) return;\n\n router.go(to);\n }\n</script>\n\n<tr class=\"hover cursor-pointer\" onclick={follow}>{@render children()}</tr>\n","<script>\n import { t } from \"../lib/copy.js\";\n let { value = $bindable(\"\"), placeholder, label, onsearch } = $props();\n</script>\n\n<div class=\"join w-full sm:w-auto\">\n <input\n class=\"input input-sm join-item w-full sm:w-48 md:w-56\"\n type=\"search\"\n aria-label={label}\n {placeholder}\n bind:value\n onkeydown={(event) => event.key === \"Enter\" && onsearch()}\n />\n <button type=\"button\" class=\"btn btn-sm join-item\" onclick={onsearch}>{t(\"ui.search\")}</button>\n</div>\n","<script>\n import Empty from \"./Empty.svelte\";\n\n let { columns, count, empty, rows } = $props();\n\n const heads = $derived(\n columns.map((column) => (typeof column === \"string\" ? { label: column } : column)),\n );\n</script>\n\n{#if count === 0}\n <Empty>{empty}</Empty>\n{:else}\n <div class=\"sheet overflow-x-auto\">\n <table class=\"table\">\n <thead>\n <tr>\n {#each heads as head, index (index)}\n <th\n class=\"{head.right ? 'text-right' : ''} {head.hide ? 'hidden md:table-cell' : ''}\"\n >{head.label ?? \"\"}</th>\n {/each}\n </tr>\n </thead>\n <tbody>{@render rows()}</tbody>\n </table>\n </div>\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { moment, since } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Search from \"./ui/Search.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n\n let { api, feedback } = $props();\n\n const LENSES = [\n [\"allowed\", t(\"devices.lenses.allowed\"), { blocked: false }],\n [\"blocked\", t(\"devices.lenses.blocked\"), { blocked: true }],\n [\"unattached\", t(\"devices.lenses.unattached\"), { unattached: true }],\n ];\n\n const QUERY = `\n query Devices($blocked: Boolean, $unattached: Boolean, $agent: String, $limit: Int) {\n devices(blocked: $blocked, unattached: $unattached, agent: $agent, limit: $limit) {\n id label category known ipAddress userAgent lastSeenAt blockedAt\n actors { uuid identifier }\n sessions { id }\n }\n }\n `;\n\n const LIMIT = 100;\n\n const COLUMNS = [\n \"\",\n t(\"devices.columns.device\"),\n { label: t(\"devices.columns.who\"), hide: true },\n { label: t(\"devices.columns.ip_address\"), hide: true },\n t(\"devices.columns.last_seen\"),\n ];\n\n let devices = $state([]);\n let loading = $state(true);\n let lens = $state(\"allowed\");\n let search = $state(\"\");\n let agent = $state(\"\");\n let chosen = $state(new Set());\n let refuse = $state(false);\n let busy = $state(false);\n let section = $state(null);\n\n const narrowing = $derived(LENSES.find(([key]) => key === lens)?.[2] ?? {});\n\n async function load() {\n loading = true;\n\n const data = await feedback.attempt(() =>\n api.query(QUERY, {\n blocked: narrowing.blocked ?? null,\n unattached: narrowing.unattached ?? null,\n agent: agent || null,\n limit: LIMIT,\n }),\n );\n\n loading = false;\n\n if (data) {\n devices = data.devices;\n chosen = new Set();\n }\n }\n\n load().then(() => {\n if (location.hash === \"#devices\") section?.scrollIntoView();\n });\n\n function look(key) {\n lens = key;\n load();\n }\n\n function filter() {\n agent = search.trim();\n refuse = false;\n load();\n }\n\n function clearFilter() {\n search = \"\";\n filter();\n }\n\n function toggle(id) {\n const next = new Set(chosen);\n\n next.has(id) ? next.delete(id) : next.add(id);\n chosen = next;\n }\n\n const all = $derived(devices.length > 0 && chosen.size === devices.length);\n\n function toggleAll() {\n chosen = all ? new Set() : new Set(devices.map((device) => device.id));\n }\n\n const blocking = $derived(lens !== \"blocked\");\n\n function outcome(count, spared) {\n const done = t(blocking ? \"devices.blocked_count\" : \"devices.unblocked_count\", { count });\n\n return spared ? t(\"devices.spared\", { done }) : done;\n }\n\n async function bulk(variables, question) {\n if (!confirm(question)) return;\n\n busy = true;\n\n const mutation = blocking\n ? `mutation Bulk($ids: [ID!], $agent: String, $refuse: Boolean) {\n blockDevices(ids: $ids, agent: $agent, refuse: $refuse) { count spared }\n }`\n : `mutation Bulk($ids: [ID!]!) { unblockDevices(ids: $ids) { count } }`;\n\n const data = await feedback.attempt(() => api.query(mutation, variables));\n\n busy = false;\n\n if (!data) return;\n\n const answer = data.blockDevices ?? data.unblockDevices;\n\n await load();\n feedback.say(\n refuse && variables.agent\n ? t(\"devices.refused\", { done: outcome(answer.count, answer.spared), agent: variables.agent })\n : outcome(answer.count, answer.spared),\n );\n }\n\n const blockChosen = () =>\n bulk(\n { ids: [...chosen] },\n blocking\n ? t(\"devices.block_chosen_question\", { count: chosen.size })\n : t(\"devices.unblock_chosen_question\", { count: chosen.size }),\n );\n\n const blockMatching = () => {\n const question = t(\"devices.block_matching_question\", { agent });\n\n return bulk({ agent, refuse }, refuse ? t(\"devices.block_matching_refuse\", { question }) : question);\n };\n\n const nothing = $derived(\n lens === \"blocked\"\n ? t(\"devices.empty.blocked\")\n : lens === \"unattached\"\n ? t(\"devices.empty.unattached\")\n : t(\"devices.empty.allowed\"),\n );\n</script>\n\n<div id=\"devices\" bind:this={section} class=\"scroll-mt-20\">\n <Section title={t(\"devices.title\")}>\n {#snippet actions()}\n <Search\n bind:value={search}\n label={t(\"devices.filter_label\")}\n placeholder=\"curl, python-requests\"\n onsearch={filter}\n />\n <div class=\"range\" role=\"group\" aria-label={t(\"devices.which\")}>\n {#each LENSES as [key, label] (key)}\n <button type=\"button\" aria-pressed={lens === key} onclick={() => look(key)}>{label}</button>\n {/each}\n </div>\n {/snippet}\n\n {#if agent && blocking}\n <div class=\"alert alert-warning alert-soft flex-col items-start gap-2\">\n <p class=\"text-sm\">\n {t(\"devices.showing\")} <code class=\"font-mono\">{agent}</code>.\n <button type=\"button\" class=\"link\" onclick={clearFilter}>{t(\"devices.clear\")}</button>\n </p>\n <label class=\"flex items-center gap-2 text-sm\">\n <input type=\"checkbox\" class=\"checkbox\" bind:checked={refuse} />\n {t(\"devices.refuse_agent\")}\n </label>\n <button\n type=\"button\"\n class=\"btn btn-sm btn-error btn-outline\"\n disabled={busy}\n onclick={blockMatching}\n >\n {t(\"devices.block_matching\")}\n </button>\n </div>\n {:else if agent}\n <p class=\"text-sm opacity-85\">\n {t(\"devices.showing_blocked\")} <code class=\"font-mono\">{agent}</code>.\n <button type=\"button\" class=\"link\" onclick={clearFilter}>{t(\"devices.clear\")}</button>\n </p>\n {/if}\n\n {#if devices.length}\n <div class=\"flex flex-wrap items-center gap-3\">\n <label class=\"flex items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n checked={all}\n indeterminate={chosen.size > 0 && !all}\n onchange={toggleAll}\n />\n {chosen.size\n ? t(\"devices.chosen\", { count: chosen.size })\n : t(\"devices.choose_all\", { count: devices.length })}\n </label>\n {#if chosen.size}\n <button\n type=\"button\"\n class=\"btn btn-sm {blocking ? 'btn-error btn-outline' : 'btn-outline'}\"\n disabled={busy}\n onclick={blockChosen}\n >\n {t(blocking ? \"devices.block_count\" : \"devices.unblock_count\", { count: chosen.size })}\n </button>\n {/if}\n {#if devices.length === LIMIT}\n <span class=\"hint\">{t(\"devices.newest\", { count: LIMIT })}</span>\n {/if}\n </div>\n {/if}\n\n {#if loading && devices.length === 0}\n <Spinner />\n {:else}\n <Table columns={COLUMNS} count={devices.length} empty={nothing}>\n {#snippet rows()}\n {#each devices as device (device.id)}\n <Row to={`/actors/devices/${device.id}`}>\n <td class=\"w-0\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n aria-label={t(\"devices.choose\", { label: device.label })}\n checked={chosen.has(device.id)}\n onchange={() => toggle(device.id)}\n />\n </td>\n <td class=\"max-w-[18rem]\">\n <Link to={`/actors/devices/${device.id}`} class=\"link link-hover font-medium\">\n {device.label}\n </Link>\n <div class=\"flex flex-wrap items-center gap-1.5\">\n <span class=\"truncate text-xs opacity-75\">{device.category}</span>\n {#if device.blockedAt}\n <span class=\"badge badge-error badge-xs\">{t(\"devices.blocked\")}</span>\n {:else if !device.known}\n <span class=\"badge badge-warning badge-xs\">{t(\"devices.unrecognised\")}</span>\n {/if}\n {#if device.sessions.length}\n <span class=\"badge badge-success badge-xs\">{t(\"devices.signed_in\")}</span>\n {/if}\n </div>\n {#if agent && device.userAgent}\n <div class=\"truncate font-mono text-xs opacity-80\" title={device.userAgent}>\n {device.userAgent}\n </div>\n {/if}\n </td>\n\n <td class=\"hidden max-w-[16rem] text-xs md:table-cell\">\n {#if device.actors.length}\n <div class=\"truncate\">\n {#each device.actors as actor, at (actor.uuid)}{at ? \", \" : \"\"}<Link\n to={`/actors/${actor.uuid}`}\n class=\"link link-hover\">{actor.identifier}</Link\n >{/each}\n </div>\n {:else}\n <span class=\"opacity-80\">{t(\"devices.nobody_yet\")}</span>\n {/if}\n </td>\n\n <td class=\"hidden font-mono text-xs opacity-85 md:table-cell\">\n {device.ipAddress ?? \"—\"}\n </td>\n\n <td class=\"text-xs whitespace-nowrap opacity-85\" title={moment(device.lastSeenAt)}>\n {since(device.lastSeenAt)}\n </td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n {/if}\n </Section>\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n let { value = [], available = [], onchange, disabled = false } = $props();\n\n const SHOWN = 40;\n const FOLDED = 24;\n const id = `scopes-${Math.random().toString(36).slice(2, 10)}`;\n\n let query = $state(\"\");\n let open = $state(false);\n let active = $state(0);\n let unfolded = $state(false);\n\n const held = $derived([...new Set(value)].sort());\n const needle = $derived(query.trim().toLowerCase());\n const offered = $derived(\n [...new Set(available)]\n .filter((scope) => !value.includes(scope) && (!needle || scope.toLowerCase().includes(needle)))\n .sort((a, b) => rank(a) - rank(b) || a.localeCompare(b)),\n );\n const listed = $derived(offered.slice(0, SHOWN));\n const typed = $derived(query.trim());\n const novel = $derived(typed !== \"\" && !value.includes(typed) && !available.includes(typed));\n const choices = $derived(novel ? [...listed, typed] : listed);\n const shown = $derived(unfolded || held.length <= FOLDED ? held : held.slice(0, FOLDED));\n\n $effect(() => {\n if (active >= choices.length) active = Math.max(choices.length - 1, 0);\n });\n\n function rank(scope) {\n return needle && scope.toLowerCase().startsWith(needle) ? 0 : 1;\n }\n\n function add(scope) {\n if (!scope || value.includes(scope)) return;\n\n onchange([...value, scope]);\n query = \"\";\n active = 0;\n }\n\n function remove(scope) {\n onchange(value.filter((one) => one !== scope));\n }\n\n function keydown(event) {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n open = true;\n active = Math.min(active + 1, choices.length - 1);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n active = Math.max(active - 1, 0);\n } else if (event.key === \"Enter\") {\n event.preventDefault();\n add(open && choices.length ? choices[active] : typed);\n } else if (event.key === \"Escape\") {\n open = false;\n }\n }\n</script>\n\n<div class=\"scope-picker\">\n {#if !disabled}\n <div class=\"scope-picker-field\">\n <input\n class=\"input input-sm w-full font-mono\"\n role=\"combobox\"\n aria-expanded={open && choices.length > 0}\n aria-controls={`${id}-list`}\n aria-autocomplete=\"list\"\n aria-activedescendant={open && choices.length ? `${id}-${active}` : undefined}\n aria-label={t(\"scopes_editor.label\")}\n placeholder={t(\"scopes_editor.placeholder\", { count: available.length })}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n bind:value={query}\n oninput={() => {\n open = true;\n active = 0;\n }}\n onfocus={() => (open = true)}\n onblur={() => (open = false)}\n onkeydown={keydown}\n />\n\n {#if open && choices.length}\n <ul class=\"scope-picker-list\" id={`${id}-list`} role=\"listbox\" aria-label={t(\"scopes_editor.offered\")}>\n {#each choices as scope, index (scope)}\n <li\n id={`${id}-${index}`}\n role=\"option\"\n aria-selected={index === active}\n class=\"scope-picker-option\"\n class:scope-picker-active={index === active}\n onmousedown={(event) => {\n event.preventDefault();\n add(scope);\n }}\n onmousemove={() => (active = index)}\n >\n {#if novel && index === choices.length - 1}\n <span class=\"scope-picker-new\">{t(\"scopes_editor.add_new\")}</span>\n {/if}\n <span class=\"scope font-mono\" class:scope-privileged={scope.startsWith(\"masks:\")}>{scope}</span>\n </li>\n {/each}\n\n {#if offered.length > SHOWN}\n <li class=\"scope-picker-more\" role=\"presentation\">\n {t(\"scopes_editor.more\", { count: offered.length - SHOWN })}\n </li>\n {/if}\n </ul>\n {/if}\n </div>\n {/if}\n\n {#if held.length}\n <ul class=\"scope-picker-held\" aria-label={t(\"scopes_editor.held\", { count: held.length })}>\n {#each shown as scope (scope)}\n <li class=\"badge font-mono text-xs {scope.startsWith('masks:') ? 'badge-error badge-soft' : 'badge-neutral badge-soft'}\">\n {scope}\n {#if !disabled}\n <button\n type=\"button\"\n class=\"scope-picker-remove\"\n aria-label={t(\"scopes_editor.remove\", { scope })}\n onclick={() => remove(scope)}\n >×</button>\n {/if}\n </li>\n {/each}\n\n {#if held.length > FOLDED}\n <li>\n <button type=\"button\" class=\"btn btn-ghost btn-xs\" onclick={() => (unfolded = !unfolded)}>\n {unfolded ? t(\"scopes_editor.fewer\") : t(\"scopes_editor.all\", { count: held.length })}\n </button>\n </li>\n {/if}\n </ul>\n {:else}\n <p class=\"hint\">{t(\"scopes_editor.none\")}</p>\n {/if}\n</div>\n","<script>\n import { t } from \"../lib/copy.js\";\n let {\n label,\n value = $bindable(\"\"),\n type = \"text\",\n onsave = null,\n save = t(\"ui.save\"),\n ...rest\n } = $props();\n</script>\n\n<label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{label}</span>\n\n {#if onsave}\n <div class=\"join\">\n <input class=\"input input-sm join-item w-full\" {type} bind:value {...rest} />\n <button type=\"button\" class=\"btn btn-sm join-item\" onclick={onsave}>{save}</button>\n </div>\n {:else}\n <input class=\"input input-sm w-full\" {type} bind:value {...rest} />\n {/if}\n</label>\n","<script>\n let { feedback } = $props();\n</script>\n\n{#if feedback.notice}\n <div class=\"alert alert-success alert-soft text-sm\" role=\"status\">{feedback.notice}</div>\n{/if}\n\n{#if feedback.failure}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">{feedback.failure}</div>\n{/if}\n","<script>\n import Link from \"./Link.svelte\";\n\n let { title, lede = null, id = null, back = null, hero = false, lead, after, actions, children } = $props();\n\n let heading;\n\n $effect(() => {\n document.title = title;\n });\n\n $effect(() => {\n heading?.focus({ preventScroll: true });\n });\n</script>\n\n<div class=\"console-page\">\n {#if back}\n <div>\n <Link to={back.to} class=\"link link-hover text-sm opacity-85\">&larr; {back.label}</Link>\n </div>\n {/if}\n\n <header class=\"flex flex-wrap items-end justify-between gap-x-6 gap-y-4\">\n <div class=\"flex min-w-0 items-start gap-4\">\n {#if lead}{@render lead()}{/if}\n\n <div class=\"flex min-w-0 flex-col gap-2\">\n <div class=\"flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1\">\n <h1 class=\"headline min-w-0 break-words outline-none\" class:headline-hero={hero} tabindex=\"-1\" bind:this={heading}>{title}</h1>\n {#if after}{@render after()}{/if}\n </div>\n\n {#if id}\n <p class=\"stamp\">{id}</p>\n {/if}\n\n {#if lede}\n <p class=\"deck\">{lede}</p>\n {/if}\n </div>\n </div>\n\n {#if actions}\n <div class=\"flex w-full flex-wrap items-center gap-2 sm:w-auto\">{@render actions()}</div>\n {/if}\n </header>\n\n {@render children()}\n</div>\n","<script>\n import Marks from \"./ui/Marks.svelte\";\n import { actorMarks } from \"./lib/marks.js\";\n import { t } from \"./lib/copy.js\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import { createPages } from \"./lib/pages.svelte.js\";\n import Pager from \"./ui/Pager.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day } from \"./lib/format.js\";\n import Devices from \"./Devices.svelte\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Search from \"./ui/Search.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n\n let { api } = $props();\n\n const PRESENCE = `\n sessions { id }\n devices { id blockedAt }\n `;\n\n const pages = createPages();\n\n const LENSES = [\n [\"everyone\", t(\"actors.lenses.everyone\"), {}],\n [\"invited\", t(\"actors.lenses.invited\"), { activated: false }],\n [\"waiting\", t(\"actors.lenses.waiting\"), { pendingApproval: true }],\n [\"help\", t(\"actors.lenses.help\"), { recoveryRequested: true }],\n [\"managers\", t(\"actors.lenses.managers\"), { holds: \"masks:manage\" }],\n [\"suspended\", t(\"actors.lenses.suspended\"), { suspended: true }],\n ];\n\n const QUERY = `\n query Actors(\n $search: String, $activated: Boolean, $holds: String, $pendingApproval: Boolean,\n $recoveryRequested: Boolean, $suspended: Boolean, $afterId: ID, $limit: Int\n ) {\n actors(\n search: $search, activated: $activated, holds: $holds, pendingApproval: $pendingApproval,\n recoveryRequested: $recoveryRequested, suspended: $suspended, afterId: $afterId, limit: $limit\n ) {\n uuid identifier nickname name email emailVerified otpEnabled backupCodesRemaining\n lastLoginAt scopes activated invitedAt pendingApproval recoveryRequestedAt suspendedAt\n avatars { photo identicon }\n ${PRESENCE}\n }\n actorCount(\n search: $search, activated: $activated, holds: $holds, pendingApproval: $pendingApproval,\n recoveryRequested: $recoveryRequested, suspended: $suspended\n )\n }\n `;\n\n const CREATE = `\n mutation Create($nickname: String, $email: String, $password: String, $scopes: [String!]) {\n createActor(nickname: $nickname, email: $email, password: $password, scopes: $scopes) {\n delivered url actor { uuid identifier activated }\n }\n }\n `;\n\n const STANDARD = [\"openid\", \"profile\", \"email\", \"offline_access\", \"identities\"];\n\n const COLUMNS = [\n t(\"actors.columns.actor\"),\n { label: t(\"actors.columns.signed_in_on\"), hide: true },\n { label: t(\"actors.columns.last_seen\"), hide: true },\n ];\n\n const feedback = createFeedback();\n\n let search = $state(\"\");\n let actors = $state([]);\n let loading = $state(true);\n const router = useRouter();\n\n let lens = $state(LENSES.find(([key]) => key === router.query.get(\"lens\"))?.[0] ?? \"everyone\");\n\n const narrowing = $derived(LENSES.find(([key]) => key === lens)?.[2] ?? {});\n\n let adding = $state(false);\n let inviting = $state(false);\n let addresses = $state(\"\");\n let joining = $state([]);\n let groups = $state([]);\n let invited = $state(null);\n\n let groupsLoaded = false;\n\n const invitedCount = $derived(invited?.filter((one) => one.outcome === \"invited\").length ?? 0);\n\n async function openInvites() {\n inviting = true;\n invited = null;\n\n if (groupsLoaded) return;\n\n const data = await feedback.attempt(() => api.query(\"query Groups { groups { key name } }\"));\n\n if (!data) return;\n\n groups = data.groups;\n groupsLoaded = true;\n }\n\n async function inviteMany() {\n busy = true;\n\n const data = await feedback.attempt(() =>\n api.query(\n `mutation Invite($emails: [String!]!, $groups: [String!]) {\n inviteActors(emails: $emails, groups: $groups) { outcomes { email outcome url } }\n }`,\n { emails: addresses.split(/[\\s,;]+/).filter(Boolean), groups: joining },\n ),\n );\n\n busy = false;\n\n if (!data) return;\n\n invited = data.inviteActors.outcomes;\n inviting = false;\n addresses = \"\";\n again();\n }\n let nickname = $state(\"\");\n let email = $state(\"\");\n let password = $state(\"\");\n let scopes = $state([...STANDARD]);\n let supported = $state([]);\n let minimum = $state(8);\n let busy = $state(false);\n let created = $state(null);\n\n async function load() {\n loading = true;\n\n try {\n const data = await api.query(QUERY, {\n search: search.trim() || null,\n activated: narrowing.activated ?? null,\n holds: narrowing.holds ?? null,\n pendingApproval: narrowing.pendingApproval ?? null,\n recoveryRequested: narrowing.recoveryRequested ?? null,\n suspended: narrowing.suspended ?? null,\n afterId: pages.cursor,\n limit: pages.size,\n });\n\n actors = data.actors;\n pages.counted(data.actorCount);\n } catch (thrown) {\n feedback.blame(thrown);\n } finally {\n loading = false;\n }\n }\n\n function again() {\n pages.reset();\n load();\n }\n\n function turn(direction) {\n if (direction === \"forward\") pages.forward(actors.at(-1)?.uuid);\n else pages.back();\n\n load();\n }\n\n function look(chosen) {\n lens = chosen;\n router.replace(chosen === \"everyone\" ? \"/actors\" : `/actors?lens=${chosen}`);\n again();\n }\n\n load();\n\n\n async function open() {\n nickname = \"\";\n email = \"\";\n password = \"\";\n scopes = [...STANDARD];\n created = null;\n adding = true;\n feedback.clear();\n\n if (supported.length) return;\n\n const data = await feedback.attempt(() =>\n api.query(\"query Scopes { scopesSupported minimumPassword }\"),\n );\n\n if (data) {\n supported = data.scopesSupported;\n minimum = data.minimumPassword;\n }\n }\n\n function close() {\n adding = false;\n feedback.clear();\n }\n\n async function send() {\n busy = true;\n\n const data = await feedback.attempt(() =>\n api.query(CREATE, {\n nickname: nickname.trim() || null,\n email: email.trim() || null,\n password: password || null,\n scopes,\n }),\n );\n\n busy = false;\n\n if (!data) return;\n\n created = data.createActor;\n adding = false;\n\n pages.reset();\n await load();\n }\n\n const presence = (actor) => {\n const parts = [\n t(\"actors.sessions\", { count: actor.sessions.length }),\n t(\"actors.devices\", { count: actor.devices.length }),\n ];\n\n return parts.join(\" · \");\n };\n</script>\n\n<Page title={t(\"actors.title\")}>\n {#snippet actions()}\n <div class=\"range\" role=\"group\" aria-label={t(\"actors.who\")}>\n {#each LENSES as [key, label] (key)}\n <button type=\"button\" aria-pressed={lens === key} onclick={() => look(key)}>{label}</button>\n {/each}\n </div>\n\n <Search\n bind:value={search}\n label={t(\"actors.search\")}\n placeholder={t(\"actors.search_placeholder\")}\n onsearch={again}\n />\n <button type=\"button\" class=\"btn btn-sm\" onclick={openInvites}>{t(\"actors.invite_many\")}</button>\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={open}>{t(\"actors.add\")}</button>\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if inviting}\n <Section title={t(\"actors.invites.title\")} lede={t(\"actors.invites.lede\")}>\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"actors.invites.addresses\")}</span>\n <textarea class=\"textarea w-full font-mono text-sm\" rows=\"6\" bind:value={addresses}></textarea>\n </label>\n\n {#if groups.length}\n <fieldset class=\"flex flex-col gap-1\">\n <legend class=\"field-label\">{t(\"actors.invites.groups\")}</legend>\n {#each groups as group (group.key)}\n <label class=\"flex items-center gap-2 text-sm\">\n <input type=\"checkbox\" class=\"checkbox checkbox-sm\" value={group.key} bind:group={joining} />\n {group.name}\n </label>\n {/each}\n </fieldset>\n {/if}\n\n <div class=\"flex flex-wrap gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !addresses.trim()} onclick={inviteMany}>\n {busy ? t(\"actors.form.adding\") : t(\"actors.invites.send\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => (inviting = false)}>{t(\"actors.form.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n {#if invited}\n <Section title={t(\"actors.invites.done\", { count: invitedCount })}>\n <ul class=\"flex flex-col gap-1 text-sm\">\n {#each invited as one (one.email)}\n <li class=\"flex flex-wrap items-baseline gap-x-2\">\n <span class=\"font-mono\">{one.email}</span>\n <span class=\"opacity-80\">{t(`actors.invites.outcomes.${one.outcome}`)}</span>\n {#if one.url}<code class=\"tray px-1 text-xs break-all\">{one.url}</code>{/if}\n </li>\n {/each}\n </ul>\n </Section>\n {/if}\n\n {#if adding}\n <Section title={t(\"actors.add\")}>\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field\n label={t(\"actors.form.nickname\")}\n bind:value={nickname}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"ada\"\n />\n <Field label={t(\"actors.form.email\")} type=\"email\" bind:value={email} placeholder=\"ada@example.com\" />\n </div>\n\n <Field\n label={t(\"actors.form.password\")}\n type=\"password\"\n bind:value={password}\n autocomplete=\"new-password\"\n placeholder={t(\"actors.form.password_placeholder\")}\n />\n\n {#if password}\n <p class=\"hint\">{t(\"actors.form.minimum\", { count: minimum })}</p>\n {/if}\n\n <div class=\"flex flex-col gap-2\">\n <span class=\"legend\">{t(\"actors.form.scopes\")}</span>\n <ScopesEditor\n value={scopes}\n available={supported}\n onchange={(chosen) => (scopes = chosen)}\n />\n </div>\n\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm\"\n disabled={busy || !(nickname.trim() || email.trim())}\n onclick={send}\n >\n {busy\n ? t(\"actors.form.adding\")\n : password\n ? t(\"actors.form.create\")\n : t(\"actors.form.invite\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={close}>{t(\"actors.form.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n {#if created}\n <Section title={created.actor.activated ? t(\"actors.created.account\") : t(\"actors.created.invitation\")}>\n <p class=\"text-sm opacity-85\">\n {#if created.actor.activated}\n {t(\"actors.created.can_sign_in\", { identifier: created.actor.identifier })}{created.url\n ? ` ${t(\"actors.created.confirm_link\")}`\n : \"\"}\n {:else if created.delivered}\n {t(\"actors.created.emailed\")}\n {:else}\n {t(\"actors.created.pass_along\")}\n {/if}\n </p>\n\n {#if created.url}\n <p class=\"tray px-2 py-1 font-mono text-xs break-all\">{created.url}</p>\n {/if}\n </Section>\n {/if}\n\n {#if loading && actors.length === 0}\n <Spinner />\n {:else}\n <Table\n columns={COLUMNS}\n count={actors.length}\n empty={search.trim()\n ? t(\"actors.empty.search\", { search: search.trim() })\n : t(`actors.empty.${lens}`)}\n >\n {#snippet rows()}\n {#each actors as actor (actor.uuid)}\n <Row to={`/actors/${actor.uuid}`}>\n <td class=\"w-full max-w-0 md:w-auto md:max-w-none\">\n <div class=\"flex items-center gap-3\">\n <img\n src={`${actor.avatars.photo ?? actor.avatars.identicon}?size=32`}\n width=\"32\"\n height=\"32\"\n alt=\"\"\n class=\"size-8 shrink-0 rounded object-cover\"\n class:drawn={!actor.avatars.photo}\n />\n <div class=\"min-w-0\">\n <div class=\"flex min-w-0 items-center gap-2\">\n <Link to={`/actors/${actor.uuid}`} class=\"link link-hover truncate font-medium\">\n {actor.identifier}\n </Link>\n <Marks marks={actorMarks(actor)} />\n </div>\n <div class=\"hint truncate text-xs\">\n {actor.name ? `${actor.name} · ` : \"\"}{actor.email ?? t(\"actors.no_email\")}<span class=\"md:hidden\">\n {\" · \"}{actor.activated ? day(actor.lastLoginAt, t(\"actors.never\")) : t(\"actors.never\")}</span\n >\n </div>\n </div>\n </div>\n </td>\n\n <td class=\"hidden text-xs whitespace-nowrap opacity-85 md:table-cell\">{presence(actor)}</td>\n\n <td class=\"hidden text-xs whitespace-nowrap opacity-85 md:table-cell\">\n {actor.activated ? day(actor.lastLoginAt, t(\"actors.never\")) : t(\"actors.never\")}\n </td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n\n <Pager {pages} shown={actors.length} busy={loading} onpage={turn} />\n {/if}\n\n <Devices {api} {feedback} />\n</Page>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { moment, since } from \"./lib/format.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { api, feedback, rows, onchange, showActor = false } = $props();\n\n const REVOKE = `\n mutation Revoke($id: ID!) {\n revokeConnection(id: $id) { connection { id revokedAt } }\n }\n `;\n\n const STOP = `\n mutation Stop($id: ID!) {\n revokeDelegation(id: $id) { delegation { id revokedAt } }\n }\n `;\n\n async function stop(connection, delegation) {\n if (!confirm(t(\"connections.stop_confirm\", { client: delegation.client.name, provider: connection.provider.name })))\n return;\n\n const done = await feedback.attempt(\n () => api.query(STOP, { id: delegation.id }),\n t(\"connections.stopped\", { client: delegation.client.name }),\n );\n\n if (done) await onchange();\n }\n\n async function revoke(connection) {\n const held = showActor ? connection.actor.identifier : connection.provider.name;\n\n if (\n !confirm(t(\"connections.disconnect_confirm\", { held }))\n )\n return;\n\n const done = await feedback.attempt(\n () => api.query(REVOKE, { id: connection.id }),\n t(\"connections.disconnected\"),\n );\n\n if (done) await onchange();\n }\n</script>\n\n{#if rows.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"connections.empty\")}</p>\n{:else}\n <ul class=\"slats\">\n {#each rows as connection (connection.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <span class=\"flex flex-wrap items-baseline gap-2\">\n {#if showActor}\n <Link to={`/actors/${connection.actor.uuid}`} class=\"link link-hover text-sm font-medium\">\n {connection.actor.identifier}\n </Link>\n {:else}\n <span class=\"text-sm font-medium\">{connection.provider.name}</span>\n {/if}\n\n {#if connection.signedInAt}\n <span class=\"badge badge-success badge-xs\">{t(\"connections.badges.signs_in\")}</span>\n {/if}\n {#if connection.email && !connection.emailVerified}\n <span class=\"badge badge-warning badge-xs\">{t(\"connections.badges.unconfirmed\")}</span>\n {/if}\n {#if connection.delegable}\n <span class=\"badge badge-info badge-xs\">{t(\"connections.badges.delegable\")}</span>\n {/if}\n </span>\n\n <button type=\"button\" class=\"link text-xs text-error\" onclick={() => revoke(connection)}>\n {t(\"connections.disconnect\")}\n </button>\n </div>\n\n <span class=\"truncate text-xs opacity-75\">\n {connection.label ?? connection.email ?? connection.subject}\n </span>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n <span title={moment(connection.connectedAt)}>\n {t(\"connections.connected\", { when: since(connection.connectedAt) })}\n </span>\n {#if connection.signedInAt}\n <span title={moment(connection.signedInAt)}>\n {t(\"connections.signed_in\", { when: since(connection.signedInAt) })}\n </span>\n {/if}\n </div>\n\n {#each connection.delegations ?? [] as delegation (delegation.id)}\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 border-l-2 border-base-300 pl-2 text-xs\">\n <span>\n <Link to={`/clients/${delegation.client.clientId}`} class=\"link link-hover\">{delegation.client.name}</Link>\n <span class=\"opacity-80\">\n {delegation.releasedAt\n ? t(\"connections.can_use_last\", { when: since(delegation.releasedAt) })\n : t(\"connections.can_use\")}\n </span>\n </span>\n <button type=\"button\" class=\"link text-error\" onclick={() => stop(connection, delegation)}>{t(\"connections.stop\")}</button>\n </div>\n {/each}\n </li>\n {/each}\n </ul>\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { joined, moment, since } from \"./lib/format.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { api, feedback, rows, onchange, showActor = false } = $props();\n\n const REVOKE = `\n mutation Revoke($id: ID!) {\n revokeConsent(id: $id) { consent { id revokedAt } }\n }\n `;\n\n async function revoke(consent) {\n const held = showActor ? consent.actor.identifier : consent.client.name;\n\n if (\n !confirm(t(\"consents.revoke_confirm\", { held }))\n )\n return;\n\n const done = await feedback.attempt(\n () => api.query(REVOKE, { id: consent.id }),\n t(\"consents.revoked\"),\n );\n\n if (done) await onchange();\n }\n</script>\n\n{#if rows.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"consents.empty\")}</p>\n{:else}\n <ul class=\"slats\">\n {#each rows as consent (consent.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n {#if showActor}\n <Link to={`/actors/${consent.actor.uuid}`} class=\"link link-hover text-sm font-medium\">\n {consent.actor.identifier}\n </Link>\n {:else}\n <Link\n to={`/clients/${consent.client.clientId}`}\n class=\"link link-hover text-sm font-medium\"\n >\n {consent.client.name}\n </Link>\n {/if}\n\n <button type=\"button\" class=\"link text-xs text-error\" onclick={() => revoke(consent)}>\n {t(\"consents.revoke\")}\n </button>\n </div>\n\n <div class=\"flex flex-wrap gap-x-2 font-mono text-xs\">\n {#each consent.scopes as scope (scope)}\n <span class=\"scope\" class:scope-privileged={scope.startsWith(\"masks:\")}>{scope}</span>\n {/each}\n </div>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n {#if consent.audience.length}\n <span class=\"truncate font-mono\" title={joined(consent.audience)}>\n {joined(consent.audience)}\n </span>\n {/if}\n <span title={moment(consent.updatedAt)}>{t(\"consents.last_asked\", { when: since(consent.updatedAt) })}</span>\n {#if consent.expiresAt}\n <span title={moment(consent.expiresAt)}>{t(\"consents.asks_again\", { when: moment(consent.expiresAt) })}</span>\n {/if}\n </div>\n\n {#if consent.authorizationDetails?.length}\n <ul class=\"flex flex-col gap-0.5 text-xs\">\n {#each consent.authorizationDetails as held, index (index)}\n <li class=\"flex flex-wrap gap-x-2\">\n <span class=\"scope\">{held.entry.type}</span>\n <span class=\"truncate font-mono opacity-80\">{JSON.stringify(held.entry)}</span>\n <span class=\"opacity-80\">{t(\"consents.until\", { when: moment(held.expires_at) })}</span>\n </li>\n {/each}\n </ul>\n {/if}\n </li>\n {/each}\n </ul>\n{/if}\n","import { t } from \"./copy.js\";\n\nconst GRAVE = new Set([\n \"logout.undelivered\",\n \"login.refused\",\n \"login.throttled\",\n \"refresh.reused\",\n \"device.blocked\",\n \"actor.deleted\",\n \"authenticator.disabled\",\n \"connection.refused\",\n \"delegation.refused\",\n]);\n\nconst NOTABLE = new Set([\n \"password.changed\",\n \"password.reset_completed\",\n \"actor.scopes_changed\",\n \"actor.suspended\",\n \"provisioning_token.issued\",\n \"provisioning_token.revoked\",\n \"ldap_credential.issued\",\n \"ldap_credential.revoked\",\n \"client.secret_rotated\",\n \"client.logo_refused\",\n \"client.enrolled\",\n \"client.unenrolled\",\n \"signing_key.rotated\",\n \"signing_key.activated\",\n \"backup_code.spent\",\n \"connection.unlinked\",\n \"consent.revoked\",\n \"delegation.granted\",\n \"delegation.revoked\",\n]);\n\nexport function tone(action) {\n if (GRAVE.has(action)) return \"bad\";\n if (NOTABLE.has(action)) return \"watch\";\n\n return \"plain\";\n}\n\nexport function detailed(details) {\n return Object.entries(details ?? {})\n .filter(\n ([, value]) =>\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && !value.length),\n )\n .map(([key, value]) => [key.replace(/_/g, \" \"), phrase(value)]);\n}\n\nfunction phrase(value) {\n if (Array.isArray(value)) return value.join(\" \");\n if (typeof value === \"boolean\")\n return t(value ? \"event_labels.yes\" : \"event_labels.no\");\n\n return String(value);\n}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { detailed, tone } from \"./lib/events.js\";\n import { moment, since } from \"./lib/format.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { events, showActor = true, empty = t(\"events.empty\"), limit = 5, collapse = false } = $props();\n\n let all = $state(false);\n\n const same = (one, other) =>\n one.action === other.action &&\n one.actor?.uuid === other.actor?.uuid &&\n one.client?.clientId === other.client?.clientId;\n\n const runs = $derived(\n events.reduce((held, event) => {\n const last = held.at(-1);\n\n if (collapse && last && same(last.event, event)) last.count += 1;\n else held.push({ event, count: 1 });\n\n return held;\n }, []),\n );\n\n const shown = $derived(all ? runs : runs.slice(0, limit));\n\n const UUID = /\\b([0-9a-f]{8})-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\b/gi;\n\n const trail = (event) =>\n [\n ...detailed(event.details).map(([key, value]) => `${key} ${value.replace(UUID, \"$1…\")}`),\n event.ipAddress,\n event.device?.label,\n ].filter(Boolean);\n</script>\n\n{#if events.length === 0}\n <p class=\"text-sm opacity-80\">{empty}</p>\n{:else}\n <ol class=\"slats\">\n {#each shown as { event, count } (event.id)}\n <li class=\"event\">\n <span class=\"event-what\">\n <span\n class=\"event-label\"\n class:text-error={tone(event.action) === \"bad\"}\n class:text-warning={tone(event.action) === \"watch\"}\n title={event.action}\n >{event.label}</span>\n\n {#if count > 1}\n <span class=\"event-count\">{t(\"events.repeated\", { count })}</span>\n {/if}\n\n {#if showActor && event.actor}\n <Link to={`/actors/${event.actor.uuid}`} class=\"link link-hover\">{event.actor.identifier}</Link>\n {/if}\n\n {#if event.by && event.by.uuid !== event.actor?.uuid}\n <span class=\"hint\">\n {t(\"events.by\")}\n <Link to={`/actors/${event.by.uuid}`} class=\"link link-hover\">{event.by.identifier}</Link>\n </span>\n {/if}\n\n {#if event.client}\n <Link to={`/clients/${event.client.clientId}`} class=\"badge badge-ghost badge-xs\">{event.client.name}</Link>\n {/if}\n </span>\n\n <time class=\"event-when\" datetime={event.createdAt} title={moment(event.createdAt)}>\n {since(event.createdAt)}\n </time>\n\n {#if trail(event).length}\n <span class=\"event-trail\" title={JSON.stringify(event.details)}>{trail(event).join(\" · \")}</span>\n {/if}\n </li>\n {/each}\n </ol>\n\n {#if !all && runs.length > limit}\n <button type=\"button\" class=\"btn btn-ghost btn-sm self-start\" onclick={() => (all = true)}>\n {t(\"events.more\", { count: runs.length - limit })}\n </button>\n {/if}\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { day, moment, since } from \"./lib/format.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { api, feedback, actor, onchange, columns = false } = $props();\n\n async function act(document, variables, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(() => api.query(document, variables), notice);\n\n if (done) await onchange();\n }\n\n const revoke = (session) =>\n act(\n `mutation Revoke($id: ID!) { revokeSession(id: $id) { session { revokedAt } } }`,\n { id: session.id },\n t(\"presence.session_revoked\"),\n t(\"presence.revoke_question\"),\n );\n\n const onDevice = (mutation, device, notice, question = null) =>\n act(\n `mutation Act($id: ID!) { ${mutation}(id: $id) { device { id } } }`,\n { id: device.id },\n notice,\n question,\n );\n\n const signOutDevice = (device) =>\n onDevice(\"signOutDevice\", device, t(\"presence.device_signed_out\", { label: device.label }));\n\n const block = (device) =>\n onDevice(\n \"blockDevice\",\n device,\n t(\"presence.device_blocked\", { label: device.label }),\n t(\"presence.block_question\", { label: device.label }),\n );\n\n const unblock = (device) => onDevice(\"unblockDevice\", device, t(\"presence.device_unblocked\", { label: device.label }));\n\n const signOutEverywhere = () =>\n act(\n `mutation SignOut($uuid: ID!) { signOutActor(uuid: $uuid) { actor { uuid } } }`,\n { uuid: actor.uuid },\n t(\"presence.signed_out_everywhere\"),\n t(\"presence.sign_out_everywhere_question\", { identifier: actor.identifier }),\n );\n const LIMIT = 4;\n\n let allSessions = $state(false);\n let allDevices = $state(false);\n\n const sessions = $derived(allSessions ? actor.sessions : actor.sessions.slice(0, LIMIT));\n const devices = $derived(allDevices ? actor.devices : actor.devices.slice(0, LIMIT));\n</script>\n\n<div class=\"flex flex-col gap-5\">\n <div class=\"grid items-start gap-5 {columns ? 'lg:grid-cols-2' : ''}\">\n <section class=\"flex min-w-0 flex-col gap-2.5\">\n <h3 class=\"legend\">{t(\"presence.sessions\")}</h3>\n\n {#if actor.sessions.length === 0}\n <p class=\"text-sm opacity-75\">{t(\"presence.no_sessions\")}</p>\n {:else}\n <ul class=\"slats\">\n {#each sessions as session (session.id)}\n <li class=\"slat\">\n <div class=\"flex items-baseline justify-between gap-3\">\n <span class=\"font-mono text-sm\">{session.ipAddress ?? \"—\"}</span>\n <button type=\"button\" class=\"link text-xs text-error\" onclick={() => revoke(session)}>\n {t(\"presence.revoke\")}\n </button>\n </div>\n\n <span class=\"truncate text-xs opacity-75\">{session.userAgent ?? \"\"}</span>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n <span title={moment(session.authenticatedAt)}>\n {t(\"presence.signed_in\", { when: since(session.authenticatedAt) })}\n </span>\n <span>{t(\"presence.expires\", { when: day(session.expiresAt) })}</span>\n </div>\n </li>\n {/each}\n </ul>\n\n {#if !allSessions && actor.sessions.length > LIMIT}\n <button type=\"button\" class=\"btn btn-ghost btn-sm self-start\" onclick={() => (allSessions = true)}>\n {t(\"presence.show_more\", { count: actor.sessions.length - LIMIT })}\n </button>\n {/if}\n {/if}\n </section>\n\n <section class=\"flex min-w-0 flex-col gap-2.5\">\n <h3 class=\"legend\">{t(\"presence.devices\")}</h3>\n\n {#if actor.devices.length === 0}\n <p class=\"text-sm opacity-75\">{t(\"presence.no_devices\")}</p>\n {:else}\n <ul class=\"slats\">\n {#each devices as device (device.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <span class=\"flex flex-wrap items-baseline gap-2\">\n <Link to={`/actors/devices/${device.id}`} class=\"link link-hover text-sm font-medium\">\n {device.label}\n </Link>\n {#if device.blockedAt}\n <span class=\"badge badge-error badge-xs\">{t(\"presence.blocked\")}</span>\n {:else if !device.known}\n <span class=\"badge badge-warning badge-xs\">{t(\"presence.unrecognised\")}</span>\n {/if}\n </span>\n\n <span class=\"flex items-baseline gap-3\">\n <button\n type=\"button\"\n class=\"link text-xs\"\n onclick={() => signOutDevice(device)}\n >\n {t(\"presence.sign_out\")}\n </button>\n\n {#if device.blockedAt}\n <button type=\"button\" class=\"link text-xs\" onclick={() => unblock(device)}>\n {t(\"presence.unblock\")}\n </button>\n {:else}\n <button\n type=\"button\"\n class=\"link text-xs text-error\"\n onclick={() => block(device)}\n >\n {t(\"presence.block\")}\n </button>\n {/if}\n </span>\n </div>\n\n <span class=\"truncate text-xs opacity-75\">{device.userAgent ?? device.category}</span>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n <span class=\"font-mono\">{device.ipAddress ?? \"—\"}</span>\n <span title={moment(device.lastSeenAt)}>{t(\"presence.last_seen\", { when: since(device.lastSeenAt) })}</span>\n </div>\n </li>\n {/each}\n </ul>\n\n {#if !allDevices && actor.devices.length > LIMIT}\n <button type=\"button\" class=\"btn btn-ghost btn-sm self-start\" onclick={() => (allDevices = true)}>\n {t(\"presence.show_more\", { count: actor.devices.length - LIMIT })}\n </button>\n {/if}\n {/if}\n </section>\n </div>\n\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline self-start\" onclick={signOutEverywhere}>\n {t(\"presence.sign_out_everywhere\")}\n </button>\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { joined, moment, since } from \"./lib/format.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { api, feedback, rows, onchange, showActor = false, limit = 5 } = $props();\n\n let all = $state(false);\n\n const shown = $derived(all ? rows : rows.slice(0, limit));\n\n const REVOKE = `\n mutation Revoke($id: ID!, $family: Boolean) {\n revokeToken(id: $id, family: $family) { revoked }\n }\n `;\n\n const KIND = {\n access: \"badge-ghost\",\n refresh: \"badge-info\",\n code: \"badge-warning\",\n };\n\n function kind(name) {\n const key = `tokens.kinds.${name}`;\n const said = t(key);\n\n return said === key ? name : said;\n }\n\n async function revoke(token, family) {\n const held = showActor ? token.actor?.identifier : token.client?.name;\n const question = family\n ? t(\"tokens.revoke_chain_confirm\", { held })\n : t(\"tokens.revoke_confirm\", { kind: kind(token.kind) });\n\n if (!confirm(question)) return;\n\n const data = await feedback.attempt(() =>\n api.query(REVOKE, { id: token.id, family }),\n );\n\n if (!data) return;\n\n const count = data.revokeToken.revoked;\n\n feedback.say(t(\"tokens.revoked\", { count }));\n\n await onchange();\n }\n</script>\n\n{#if rows.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"tokens.empty\")}</p>\n{:else}\n <ul class=\"slats\">\n {#each shown as token (token.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <span class=\"flex flex-wrap items-baseline gap-2\">\n <span class=\"badge badge-sm {KIND[token.kind] ?? 'badge-ghost'}\">{kind(token.kind)}</span>\n\n {#if showActor && token.actor}\n <Link to={`/actors/${token.actor.uuid}`} class=\"link link-hover text-sm font-medium\">\n {token.actor.identifier}\n </Link>\n {:else if token.client}\n <Link\n to={`/clients/${token.client.clientId}`}\n class=\"link link-hover text-sm font-medium\"\n >\n {token.client.name}\n </Link>\n {/if}\n\n {#if token.parentId}\n <span class=\"text-xs opacity-75\">{t(\"tokens.rotated\")}</span>\n {/if}\n </span>\n\n <span class=\"flex items-baseline gap-3\">\n <button type=\"button\" class=\"link text-xs text-error\" onclick={() => revoke(token, false)}>\n {t(\"tokens.revoke\")}\n </button>\n {#if token.kind === \"refresh\"}\n <button\n type=\"button\"\n class=\"link text-xs text-error\"\n onclick={() => revoke(token, true)}\n >\n {t(\"tokens.revoke_chain\")}\n </button>\n {/if}\n </span>\n </div>\n\n <div class=\"flex flex-wrap gap-1\">\n {#each token.scopes as scope (scope)}\n <span class=\"scope\" class:scope-privileged={scope.startsWith(\"masks:\")}>{scope}</span>\n {/each}\n </div>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n {#if token.audience.length}\n <span class=\"truncate font-mono\" title={joined(token.audience)}>\n {joined(token.audience)}\n </span>\n {/if}\n {#if token.device}\n <span class=\"truncate\">{token.device.label}</span>\n {/if}\n <span title={moment(token.createdAt)}>{t(\"tokens.issued\", { when: since(token.createdAt) })}</span>\n <span title={moment(token.expiresAt)}>{t(\"tokens.expires\", { when: since(token.expiresAt) })}</span>\n </div>\n </li>\n {/each}\n </ul>\n\n {#if !all && rows.length > limit}\n <button type=\"button\" class=\"btn btn-ghost btn-sm self-start\" onclick={() => (all = true)}>\n {t(\"tokens.more\", { count: rows.length - limit })}\n </button>\n {/if}\n{/if}\n","<script>\n import Link from \"./Link.svelte\";\n\n let { base, part = null, parts, label } = $props();\n</script>\n\n<nav class=\"settings-tabs\" aria-label={label}>\n {#each parts as [key, path, name] (path)}\n <Link\n to={`${base}${path}`}\n class=\"settings-tab {(part ?? null) === key ? 'settings-tab-on' : ''}\"\n aria-current={(part ?? null) === key ? \"page\" : undefined}\n >\n {name}\n </Link>\n {/each}\n</nav>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, since } from \"./lib/format.js\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Connections from \"./Connections.svelte\";\n import Consents from \"./Consents.svelte\";\n import Events from \"./Events.svelte\";\n import Presence from \"./Presence.svelte\";\n import Tokens from \"./Tokens.svelte\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Marks from \"./ui/Marks.svelte\";\n import Parts from \"./ui/Parts.svelte\";\n import { actorMarks } from \"./lib/marks.js\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api, uuid, part = null } = $props();\n\n const router = useRouter();\n\n const FIELDS = [\n [\"nickname\", t(\"actor.fields.nickname\")],\n [\"name\", t(\"actor.fields.name\")],\n [\"email\", t(\"actor.fields.email\")],\n ];\n\n const MORE = [\n [\"givenName\", t(\"actor.fields.given_name\")],\n [\"familyName\", t(\"actor.fields.family_name\")],\n [\"middleName\", t(\"actor.fields.middle_name\")],\n [\"profileUrl\", t(\"actor.fields.profile_url\")],\n [\"pictureUrl\", t(\"actor.fields.picture_url\")],\n [\"websiteUrl\", t(\"actor.fields.website_url\")],\n [\"gender\", t(\"actor.fields.gender\")],\n [\"birthdate\", t(\"actor.fields.birthdate\")],\n [\"zoneinfo\", t(\"actor.fields.zoneinfo\")],\n [\"locale\", t(\"actor.fields.locale\")],\n ];\n\n const PROFILE = [...FIELDS, ...MORE];\n\n const QUERY = `\n query Actor($uuid: ID!) {\n actor(uuid: $uuid) {\n uuid identifier nickname email emailVerified phone phoneVerified signedUpAt pendingApproval\n recoveryRequestedAt\n groups { key }\n groupLabels\n suspendedAt externalId\n memberships { externalId organization { key name } }\n scopes otpEnabled emailCodesEnabled textCodesEnabled backupCodesRemaining\n backupCodesGeneratedAt lastLoginAt createdAt activated invitedAt\n passkeys { id label aaguid certification compromise userVerified lastUsedAt }\n name givenName familyName middleName profileUrl pictureUrl websiteUrl\n gender birthdate zoneinfo locale\n photoUploaded avatars { photo identicon initials }\n sessions { id ipAddress userAgent authenticatedAt expiresAt }\n devices { id label category known ipAddress userAgent lastSeenAt blockedAt }\n connections {\n id subject label email emailVerified connectedAt signedInAt delegable\n provider { key name }\n delegations { id releasedAt client { clientId name } }\n }\n consents {\n id scopes audience updatedAt expiresAt authorizationDetails\n client { clientId name }\n }\n tokens {\n id kind scopes audience parentId createdAt expiresAt\n client { clientId name }\n device { id label }\n }\n events(limit: 25) {\n id action label createdAt ipAddress details\n actor { uuid identifier }\n by { uuid identifier }\n client { clientId name }\n device { id label }\n }\n }\n groups { key name }\n viewer { uuid }\n scopesSupported\n }\n `;\n\n const feedback = createFeedback();\n\n let actor = $state(null);\n let viewer = $state(null);\n let groups = $state([]);\n let supported = $state([]);\n let draft = $state({});\n let loading = $state(true);\n let codes = $state(null);\n let link = $state(null);\n let uploading = $state(false);\n\n const yourself = $derived(Boolean(actor && viewer && actor.uuid === viewer.uuid));\n\n const PARTS = [\n [null, \"\", t(\"actor.parts.profile\")],\n [\"access\", \"/access\", t(\"actor.parts.access\")],\n [\"sign-in\", \"/sign-in\", t(\"actor.parts.sign_in\")],\n [\"activity\", \"/activity\", t(\"actor.parts.activity\")],\n ];\n\n const identity = $derived(\n actor\n ? [\n actor.name,\n actor.email ?? t(\"actors.no_email\"),\n actor.activated\n ? t(\"actor.signed_in_lede\", { when: since(actor.lastLoginAt, t(\"actor.never\")) })\n : t(\"actor.invited_lede\"),\n ]\n .filter(Boolean)\n .join(\" · \")\n : \"\",\n );\n\n const approve = () =>\n act(\n `mutation Approve($uuid: ID!) { approveActor(uuid: $uuid) { actor { uuid } } }`,\n { uuid },\n t(\"actor.approval.approved\"),\n );\n\n const resetFactors = () =>\n confirm(t(\"actor.recovery.question\", { identifier: actor.identifier })) &&\n act(\n `mutation Reset($uuid: ID!) { resetSecondFactors(uuid: $uuid) { actor { uuid } } }`,\n { uuid },\n t(\"actor.recovery.done\"),\n );\n\n const dismiss = () =>\n act(\n `mutation Dismiss($uuid: ID!) { dismissRecovery(uuid: $uuid) { actor { uuid } } }`,\n { uuid },\n t(\"actor.recovery.dismissed\"),\n );\n\n async function load() {\n loading = true;\n\n try {\n const data = await api.query(QUERY, { uuid });\n\n actor = data.actor;\n viewer = data.viewer;\n groups = data.groups;\n supported = data.scopesSupported;\n draft = Object.fromEntries(PROFILE.map(([key]) => [key, data.actor?.[key] ?? \"\"]));\n } catch (thrown) {\n feedback.blame(thrown);\n } finally {\n loading = false;\n }\n }\n\n load();\n\n async function act(document, variables, notice) {\n const data = await feedback.attempt(() => api.query(document, variables), notice);\n\n if (data) await load();\n\n return data;\n }\n\n const belongs = (group) => actor.groups.some((held) => held.key === group.key);\n\n const toggleGroup = (group) =>\n act(\n belongs(group)\n ? `mutation Leave($key: String!, $uuid: ID!) { removeGroupMember(key: $key, uuid: $uuid) { group { key } } }`\n : `mutation Join($key: String!, $uuid: ID!) { addGroupMember(key: $key, uuid: $uuid) { group { key } } }`,\n { key: group.key, uuid },\n belongs(group)\n ? t(\"actor.left_group\", { group: group.name })\n : t(\"actor.joined_group\", { group: group.name }),\n );\n\n const saveProfile = () =>\n act(\n `mutation Save($uuid: ID!, ${PROFILE.map(([key]) => `$${key}: String`).join(\", \")}) {\n updateActor(uuid: $uuid, ${PROFILE.map(([key]) => `${key}: $${key}`).join(\", \")}) { actor { uuid } }\n }`,\n {\n uuid,\n ...Object.fromEntries(\n Object.entries(draft).map(([key, value]) => [key, value === \"\" ? null : value]),\n ),\n },\n t(\"actor.profile_saved\"),\n );\n\n const saveScopes = (scopes) =>\n act(\n `mutation Scopes($uuid: ID!, $scopes: [String!]!) {\n setActorScopes(uuid: $uuid, scopes: $scopes) { actor { scopes } }\n }`,\n { uuid, scopes },\n t(\"actor.scopes_updated\"),\n );\n\n async function generate() {\n codes = null;\n\n const data = await act(\n `mutation Codes($uuid: ID!) { generateBackupCodes(uuid: $uuid) { codes } }`,\n { uuid },\n t(\"actor.codes_generated\"),\n );\n\n if (data) codes = data.generateBackupCodes.codes;\n }\n\n async function recover(document, confirmation) {\n if (!confirm(confirmation)) return;\n\n link = null;\n\n const data = await act(document, { uuid }, null);\n\n if (!data) return;\n\n const result = Object.values(data)[0];\n\n if (result.delivered) {\n feedback.say(t(\"actor.emailed\"));\n } else {\n feedback.say(t(\"actor.no_mailer\"));\n link = result.url;\n }\n }\n\n const reset = () =>\n recover(\n `mutation Reset($uuid: ID!) { resetPassword(uuid: $uuid) { delivered url } }`,\n t(\"actor.reset_question\"),\n );\n\n const resend = () =>\n recover(\n `mutation Resend($uuid: ID!) { resendInvitation(uuid: $uuid) { delivered url } }`,\n t(\"actor.resend_question\"),\n );\n\n const confirmEmail = () =>\n recover(\n `mutation Verify($uuid: ID!) { verifyEmail(uuid: $uuid) { delivered url } }`,\n t(\"actor.confirm_question\"),\n );\n\n function revokePasskey(passkey) {\n if (!confirm(t(\"actor.remove_passkey_question\", { label: passkey.label }))) return;\n\n act(\n `mutation Revoke($uuid: ID!, $id: ID!) { revokePasskey(uuid: $uuid, id: $id) { actor { uuid } } }`,\n { uuid, id: passkey.id },\n t(\"actor.passkey_removed\"),\n );\n }\n\n async function choose(event) {\n const input = event.currentTarget;\n const file = input.files?.[0];\n\n if (!file) return;\n\n uploading = true;\n\n await act(\n `mutation Upload($uuid: ID!, $photo: Upload!) {\n uploadAvatar(uuid: $uuid, photo: $photo) { actor { uuid } }\n }`,\n { uuid, photo: file },\n t(\"actor.photo_updated\"),\n );\n\n uploading = false;\n input.value = \"\";\n }\n\n function removePhoto() {\n if (!confirm(t(\"actor.remove_photo_question\"))) return;\n\n act(\n `mutation Remove($uuid: ID!) { removeAvatar(uuid: $uuid) { actor { uuid } } }`,\n { uuid },\n t(\"actor.photo_removed\"),\n );\n }\n\n function disable() {\n if (!confirm(t(\"actor.disable_question\"))) return;\n\n act(\n `mutation Disable($uuid: ID!) { disableAuthenticator(uuid: $uuid) { actor { otpEnabled } } }`,\n { uuid },\n t(\"actor.authenticator_removed\"),\n );\n }\n\n const CODE_FACTORS = [\n [\"email\", \"emailCodesEnabled\", t(\"actor.factors.email.name\"), t(\"actor.factors.email.lower\")],\n [\"sms\", \"textCodesEnabled\", t(\"actor.factors.sms.name\"), t(\"actor.factors.sms.lower\")],\n ];\n\n function turnOff(factor, name, lower) {\n if (!confirm(t(\"actor.turn_off_question\", { name: lower }))) return;\n\n act(\n `mutation TurnOff($uuid: ID!, $factor: String!) {\n disableCodeFactor(uuid: $uuid, factor: $factor) { actor { uuid } }\n }`,\n { uuid, factor },\n t(\"actor.turned_off\", { name }),\n );\n }\n\n function suspend() {\n if (!confirm(t(\"actor.suspend_question\", { identifier: actor.identifier }))) return;\n\n act(\n `mutation Suspend($uuid: ID!) { suspendActor(uuid: $uuid) { actor { suspendedAt } } }`,\n { uuid },\n t(\"actor.suspended\"),\n );\n }\n\n function restore() {\n act(\n `mutation Restore($uuid: ID!) { restoreActor(uuid: $uuid) { actor { suspendedAt } } }`,\n { uuid },\n t(\"actor.restored\"),\n );\n }\n\n async function remove() {\n if (!confirm(t(\"actor.delete_question\", { identifier: actor.identifier }))) return;\n\n const data = await feedback.attempt(() =>\n api.query(`mutation Delete($uuid: ID!) { deleteActor(uuid: $uuid) { identifier } }`, { uuid }),\n );\n\n if (data) router.go(\"/actors\");\n }\n</script>\n\n{#if loading && !actor}\n <Spinner />\n{:else if !actor}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">\n {feedback.state.failure ?? t(\"actor.missing\")}\n </div>\n{:else}\n <Page title={actor.identifier} id={actor.uuid} back={{ to: \"/actors\", label: t(\"actor.back\") }} lede={identity}>\n {#snippet lead()}\n <img\n src={`${actor.avatars.photo ?? actor.avatars.identicon}?size=128`}\n width=\"64\"\n height=\"64\"\n alt=\"\"\n class=\"size-14 shrink-0 rounded-lg object-cover sm:size-16\"\n class:drawn={!actor.avatars.photo}\n />\n {/snippet}\n\n {#snippet after()}\n <Marks marks={actorMarks(actor)} />\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if link}\n <div class=\"alert alert-info alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"actor.link_once\")}</span>\n <code class=\"font-mono text-xs break-all\">{link}</code>\n </div>\n {/if}\n\n {#if codes}\n <div class=\"alert alert-warning alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"actor.write_down\")}</span>\n <div class=\"grid grid-cols-2 gap-2 font-mono text-sm md:grid-cols-5\">\n {#each codes as code (code)}<span>{code}</span>{/each}\n </div>\n </div>\n {/if}\n\n {#if actor.pendingApproval}\n <div class=\"callout callout-warn\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{t(\"actor.approval.title\")}</strong>\n <span>{t(\"actor.approval.lede\")}</span>\n </div>\n <div class=\"callout-actions\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={approve}>{t(\"actor.approval.approve\")}</button>\n </div>\n </div>\n {/if}\n\n {#if actor.recoveryRequestedAt}\n <div class=\"callout callout-warn\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{t(\"actor.recovery.title\")}</strong>\n <span>{t(\"actor.recovery.lede\", { when: since(actor.recoveryRequestedAt) })}</span>\n <span class=\"hint\">{t(\"actor.recovery.explain\")}</span>\n </div>\n <div class=\"callout-actions\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={resetFactors}>{t(\"actor.recovery.reset\")}</button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={dismiss}>{t(\"actor.recovery.dismiss\")}</button>\n </div>\n </div>\n {/if}\n\n {#if actor.suspendedAt}\n <div class=\"callout callout-bad\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{t(\"actor.suspended_on\", { day: day(actor.suspendedAt) })}</strong>\n </div>\n <div class=\"callout-actions\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={restore}>{t(\"actor.restore\")}</button>\n </div>\n </div>\n {/if}\n\n {#if !actor.activated}\n <div class=\"callout callout-info\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{actor.invitedAt ? t(\"actor.invited_on\", { day: day(actor.invitedAt) }) : t(\"actor.invited\")}</strong>\n </div>\n <div class=\"callout-actions\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={resend}>{t(\"actor.resend\")}</button>\n </div>\n </div>\n {/if}\n\n {#if actor.email && !actor.emailVerified}\n <div class=\"callout callout-warn\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{t(\"actor.unconfirmed\", { email: actor.email })}</strong>\n </div>\n <div class=\"callout-actions\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={confirmEmail}>{t(\"actor.send_confirmation\")}</button>\n </div>\n </div>\n {/if}\n\n <Parts base={`/actors/${actor.uuid}`} {part} parts={PARTS} label={t(\"actor.parts.label\")} />\n\n <div class=\"grid gap-4\">\n {#if part === \"access\"}\n <Section row title={t(\"actor.scopes\")} lede={t(\"actor.scopes_lede\")}>\n <ScopesEditor value={actor.scopes} available={supported} onchange={saveScopes} />\n </Section>\n\n <Section row title={t(\"actor.groups\")} lede={t(\"actor.groups_lede\")}>\n {#if groups.length}\n <div class=\"flex flex-col gap-1\">\n {#each groups as group (group.key)}\n <label class=\"flex items-center gap-2 text-sm\">\n <input type=\"checkbox\" class=\"checkbox checkbox-sm\" checked={belongs(group)} onchange={() => toggleGroup(group)} />\n {group.name} <code class=\"hint font-mono\">{group.key}</code>\n </label>\n {/each}\n </div>\n {:else}\n <p class=\"text-sm opacity-85\">{t(\"actor.no_groups\")} <Link to=\"/settings\">{t(\"actor.add_group\")}</Link>.</p>\n {/if}\n\n {#if actor.groupLabels.length}\n <p class=\"hint\">{t(\"actor.group_labels\", { labels: actor.groupLabels.join(\", \") })}</p>\n {/if}\n </Section>\n\n {#if actor.externalId || actor.memberships.some((membership) => membership.externalId)}\n <Section row title={t(\"actor.provisioned\")}>\n {#if actor.externalId}\n <p class=\"text-sm\">\n {t(\"actor.provisioned_as\")} <span class=\"font-mono\">{actor.externalId}</span>.\n {t(\"actor.provider_may_change\")}\n </p>\n {/if}\n {#each actor.memberships.filter((membership) => membership.externalId) as membership (membership.organization.key)}\n <p class=\"text-sm\">\n {t(\"actor.directory_provisioned\", { organization: membership.organization.name })}\n <span class=\"font-mono\">{membership.externalId}</span>, {t(\"actor.directory_may_change\")}\n </p>\n {/each}\n </Section>\n {/if}\n\n <Section row title={t(\"actor.consents\")} lede={t(\"actor.consents_lede\")}>\n <Consents {api} {feedback} rows={actor.consents} onchange={load} />\n </Section>\n\n <Section row title={t(\"actor.connections\")} lede={t(\"actor.connections_lede\")}>\n <Connections {api} {feedback} rows={actor.connections} onchange={load} />\n </Section>\n {:else if part === \"sign-in\"}\n <Section row title={t(\"actor.password\")} lede={actor.activated ? t(\"actor.password_lede\") : t(\"actor.password_invited\")}>\n {#if actor.activated}\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={reset}>{t(\"actor.reset_password\")}</button>\n {:else}\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={resend}>{t(\"actor.resend\")}</button>\n {/if}\n </Section>\n\n <Section row title={t(\"actor.second_factor\")}>\n {#if actor.otpEnabled}\n <div class=\"sheet flex flex-col gap-1 px-4 py-3\">\n <span class=\"text-sm font-medium\">{t(\"actor.authenticator\")}</span>\n <span class=\"hint\">{t(\"actor.backup_codes\", { count: actor.backupCodesRemaining })}</span>\n <div class=\"flex flex-wrap gap-2 pt-2\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={generate}>{t(\"actor.generate\")}</button>\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={disable}>\n {t(\"actor.remove_authenticator\")}\n </button>\n </div>\n </div>\n {/if}\n\n {#each CODE_FACTORS.filter(([, field]) => actor[field]) as [factor, , name, lower] (factor)}\n <div class=\"sheet flex flex-wrap items-center justify-between gap-2 px-4 py-3\">\n <span class=\"text-sm font-medium\">{name}</span>\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={() => turnOff(factor, name, lower)}>\n {t(\"actor.turn_off\", { name: lower })}\n </button>\n </div>\n {/each}\n\n {#if !actor.otpEnabled && !actor.emailCodesEnabled && !actor.textCodesEnabled}\n <p class=\"text-sm opacity-85\">{t(\"actor.password_only\")}</p>\n {/if}\n </Section>\n\n <Section row title={t(\"actor.passkeys\")}>\n {#if actor.passkeys.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"actor.no_passkeys\")}</p>\n {:else}\n <ul class=\"flex flex-col gap-2\">\n {#each actor.passkeys as passkey (passkey.id)}\n <li class=\"sheet flex flex-col gap-1 px-4 py-3\">\n <div class=\"flex items-baseline justify-between gap-3\">\n <span class=\"text-sm font-medium\">{passkey.label}</span>\n <span class=\"flex items-baseline gap-2\">\n {#if passkey.userVerified}\n <span class=\"badge badge-success badge-xs\">{t(\"actor.verifying\")}</span>\n {/if}\n {#if passkey.certification}\n <span class=\"badge badge-ghost badge-xs\">{passkey.certification}</span>\n {/if}\n <button type=\"button\" class=\"link text-xs text-error\" onclick={() => revokePasskey(passkey)}>\n {t(\"actor.remove\")}\n </button>\n </span>\n </div>\n\n {#if passkey.compromise}\n <span class=\"text-xs text-error\">\n {t(\"actor.compromise\", { compromise: passkey.compromise.toLowerCase().replaceAll(\"_\", \" \") })}\n </span>\n {/if}\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n <span class=\"font-mono\">{passkey.aaguid ?? t(\"actor.no_aaguid\")}</span>\n <span>{t(\"actor.last_used\", { when: since(passkey.lastUsedAt, t(\"actor.never\")) })}</span>\n </div>\n </li>\n {/each}\n </ul>\n {/if}\n </Section>\n\n <Section row title={t(\"actor.signed_in\")} lede={yourself ? t(\"actor.signed_in_yourself\") : null}>\n <Presence {api} {feedback} {actor} onchange={load} />\n </Section>\n\n <Section row title={t(\"actor.tokens\")} lede={t(\"actor.tokens_lede\")}>\n <Tokens {api} {feedback} rows={actor.tokens} onchange={load} />\n </Section>\n {:else if part === \"activity\"}\n <Section>\n {#snippet actions()}\n <Link to={`/activity?actor=${actor.uuid}`} class=\"btn btn-ghost btn-sm\">{t(\"actor.all_activity\")}</Link>\n {/snippet}\n\n <Events events={actor.events} showActor={false} empty={t(\"actor.no_activity\")} limit={25} collapse />\n </Section>\n {:else}\n <Section row title={t(\"actor.profile\")}>\n <div class=\"grid gap-3\">\n {#each FIELDS as [key, label] (key)}\n <Field {label} bind:value={draft[key]} />\n {/each}\n </div>\n\n <details class=\"more\" open={MORE.some(([key]) => draft[key])}>\n <summary>{t(\"actor.more_fields\")}</summary>\n <div class=\"grid gap-3 pt-3 sm:grid-cols-2\">\n {#each MORE as [key, label] (key)}\n <Field {label} bind:value={draft[key]} />\n {/each}\n </div>\n </details>\n\n <button type=\"button\" class=\"btn btn-primary btn-sm self-start\" onclick={saveProfile}>\n {t(\"actor.save_profile\")}\n </button>\n </Section>\n\n <Section row title={t(\"actor.photo\")} lede={t(\"actor.photo_lede\")}>\n <div class=\"flex flex-wrap gap-5\">\n {#each [\"photo\", \"identicon\", \"initials\"].filter((style) => actor.avatars[style]) as style (style)}\n <div class=\"flex flex-col items-start gap-2\">\n <img\n src={`${actor.avatars[style]}?size=128`}\n width=\"64\"\n height=\"64\"\n alt=\"\"\n class=\"size-16 rounded-lg object-cover\"\n class:drawn={style !== \"photo\"}\n />\n <span class=\"hint\">{t(`actor.styles.${style}`)}</span>\n </div>\n {/each}\n </div>\n\n <div class=\"flex flex-wrap items-center gap-2\">\n <label class=\"btn btn-sm\" class:btn-disabled={uploading}>\n {actor.photoUploaded ? t(\"actor.change_photo\") : t(\"actor.upload_photo\")}\n <input\n type=\"file\"\n class=\"sr-only\"\n accept=\"image/png,image/jpeg,image/gif,image/webp\"\n disabled={uploading}\n onchange={choose}\n />\n </label>\n\n {#if actor.photoUploaded}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={removePhoto}>{t(\"actor.remove_photo\")}</button>\n {/if}\n\n {#if uploading}\n <span class=\"hint\">{t(\"actor.uploading\")}</span>\n {/if}\n </div>\n </Section>\n\n <Section row title={t(\"actor.danger\")} lede={yourself ? t(\"actor.yourself\") : t(\"actor.danger_lede\")}>\n {#if !yourself}\n <div class=\"flex flex-wrap gap-2\">\n {#if !actor.suspendedAt}\n <button type=\"button\" class=\"btn btn-sm btn-warning btn-outline\" onclick={suspend}>\n {t(\"actor.suspend\", { identifier: actor.identifier })}\n </button>\n {/if}\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={remove}>\n {t(\"actor.delete\", { identifier: actor.identifier })}\n </button>\n </div>\n {/if}\n </Section>\n {/if}\n </div>\n </Page>\n{/if}\n","<script>\n import { NONE } from \"../lib/format.js\";\n\n let { rows } = $props();\n</script>\n\n<dl class=\"grid gap-x-4 gap-y-0.5 text-sm sm:grid-cols-3 sm:gap-y-2\">\n {#each rows as { term, value, mono } (term)}\n <dt class=\"opacity-80\">{term}</dt>\n <dd class=\"pb-2 sm:col-span-2 sm:pb-0 {mono ? 'font-mono text-xs break-all' : ''}\">\n {value || NONE}\n </dd>\n {/each}\n</dl>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, moment, since } from \"./lib/format.js\";\n import Events from \"./Events.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Facts from \"./ui/Facts.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api, id } = $props();\n\n const QUERY = `\n query Device($id: ID!) {\n device(id: $id) {\n id label name category known ipAddress userAgent lastSeenAt blockedAt createdAt\n actors { uuid identifier }\n sessions {\n id ipAddress userAgent authenticatedAt expiresAt\n actor { uuid identifier }\n }\n }\n events(device: $id, limit: 25) {\n id action label createdAt ipAddress details\n actor { uuid identifier }\n by { uuid identifier }\n client { clientId name }\n }\n }\n `;\n\n const feedback = createFeedback();\n\n let device = $state(null);\n let events = $state([]);\n let loading = $state(true);\n\n async function load() {\n loading = true;\n\n try {\n const data = await api.query(QUERY, { id });\n\n device = data.device;\n events = data.events;\n } catch (thrown) {\n feedback.blame(thrown);\n } finally {\n loading = false;\n }\n }\n\n load();\n\n async function act(mutation, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(\n () => api.query(`mutation Act($id: ID!) { ${mutation}(id: $id) { device { id } } }`, { id }),\n notice,\n );\n\n if (done) await load();\n }\n\n const block = () =>\n act(\n \"blockDevice\",\n t(\"device.blocked\", { label: device.label }),\n t(\"device.block_question\", { label: device.label }),\n );\n\n const unblock = () => act(\"unblockDevice\", t(\"device.unblocked\", { label: device.label }));\n\n const signOut = () =>\n act(\n \"signOutDevice\",\n t(\"device.signed_out\", { label: device.label }),\n t(\"device.sign_out_question\", { label: device.label }),\n );\n\n const facts = $derived(\n device\n ? [\n { term: t(\"device.facts.kind\"), value: device.category },\n { term: t(\"device.facts.ip_address\"), value: device.ipAddress, mono: true },\n { term: t(\"device.facts.user_agent\"), value: device.userAgent, mono: true },\n { term: t(\"device.facts.first_seen\"), value: day(device.createdAt) },\n { term: t(\"device.facts.last_seen\"), value: moment(device.lastSeenAt) },\n ]\n : [],\n );\n</script>\n\n{#if loading && !device}\n <Spinner />\n{:else if !device}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">\n {feedback.state.failure ?? t(\"device.missing\")}\n </div>\n{:else}\n <Page\n title={device.label}\n id={device.id}\n back={{ to: \"/actors#devices\", label: t(\"device.back\") }}\n lede={device.blockedAt\n ? t(\"device.blocked_lede\", { day: day(device.blockedAt) })\n : t(\"device.seen_lede\", { when: since(device.lastSeenAt) })}\n >\n <Notices feedback={feedback.state} />\n\n <div class=\"grid items-start gap-4 md:grid-cols-2\">\n <Section title={t(\"device.what\")}>\n <Facts rows={facts} />\n\n <div class=\"flex flex-wrap gap-2 pt-1\">\n {#if device.sessions.length}\n <button type=\"button\" class=\"btn btn-sm\" onclick={signOut}>{t(\"device.sign_out_everywhere\")}</button>\n {/if}\n\n {#if device.blockedAt}\n <button type=\"button\" class=\"btn btn-sm\" onclick={unblock}>{t(\"device.unblock\")}</button>\n {:else}\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={block}>\n {t(\"device.block\")}\n </button>\n {/if}\n </div>\n </Section>\n\n <div class=\"flex flex-col gap-4\">\n <Section title={t(\"device.who\")}>\n {#if device.actors.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"device.nobody\")}</p>\n {:else}\n <ul class=\"slats\">\n {#each device.actors as actor (actor.uuid)}\n <li class=\"slat\">\n <Link to={`/actors/${actor.uuid}`} class=\"link link-hover text-sm font-medium\">\n {actor.identifier}\n </Link>\n </li>\n {/each}\n </ul>\n {/if}\n </Section>\n\n <Section title={t(\"device.live_sessions\")}>\n {#if device.sessions.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"device.no_sessions\")}</p>\n {:else}\n <ul class=\"slats\">\n {#each device.sessions as session (session.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <Link\n to={`/actors/${session.actor.uuid}`}\n class=\"link link-hover text-sm font-medium\"\n >\n {session.actor.identifier}\n </Link>\n <span class=\"font-mono text-xs opacity-80\">{session.ipAddress ?? \"—\"}</span>\n </div>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n <span title={moment(session.authenticatedAt)}>\n {t(\"device.signed_in\", { when: since(session.authenticatedAt) })}\n </span>\n <span>{t(\"device.expires\", { when: day(session.expiresAt) })}</span>\n </div>\n </li>\n {/each}\n </ul>\n {/if}\n </Section>\n\n <Section title={t(\"device.activity\")}>\n <Events {events} empty={t(\"device.no_activity\")} />\n </Section>\n </div>\n </div>\n </Page>\n{/if}\n","<script>\n import { initial } from \"../../lib/initial.js\";\n\n let { client, class: sized = \"size-8 rounded\" } = $props();\n</script>\n\n{#if client.logoUrl}\n <img src={client.logoUrl} alt=\"\" class=\"shrink-0 {sized}\" />\n{:else}\n <span class=\"grid shrink-0 place-items-center bg-base-200 font-semibold {sized}\" aria-hidden=\"true\"\n >{initial(client.name)}</span\n >\n{/if}\n","<script>\n let { label = null, value, options, onchange, disabled = false, name = null } = $props();\n</script>\n\n<label class=\"flex min-w-0 flex-col gap-1.5\">\n {#if label}<span class=\"field-label\">{label}</span>{/if}\n\n <select\n class=\"select select-sm w-full\"\n {value}\n {disabled}\n aria-label={label ? null : name}\n onchange={(event) => onchange(event.currentTarget.value)}\n >\n {#each options as [key, text, off = false] (key)}\n <option value={key} disabled={off}>{text}</option>\n {/each}\n </select>\n</label>\n","<script>\n let { checked = $bindable(false), label, onchange = null } = $props();\n</script>\n\n<label class=\"flex cursor-pointer items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n class=\"toggle toggle-sm\"\n bind:checked\n onchange={onchange ? (event) => onchange(event.currentTarget.checked) : undefined}\n />\n {label}\n</label>\n","<script>\n import Marks from \"./ui/Marks.svelte\";\n import { createPages } from \"./lib/pages.svelte.js\";\n import Pager from \"./ui/Pager.svelte\";\n import { NONE, day, joined } from \"./lib/format.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import ClientLogo from \"./ui/ClientLogo.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Search from \"./ui/Search.svelte\";\n import Select from \"./ui/Select.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n import Table from \"./ui/Table.svelte\";\n import { t } from \"./lib/copy.js\";\n\n let { api } = $props();\n\n const pages = createPages();\n\n const QUERY = `\n query Clients($search: String, $archived: Boolean, $afterId: ID, $limit: Int) {\n clients(search: $search, archived: $archived, afterId: $afterId, limit: $limit) {\n clientId name dynamic approvedAt archivedAt logoUrl(size: 64)\n resources createdAt\n }\n clientCount(search: $search, archived: $archived)\n }\n `;\n\n const CREATE = `\n mutation Create(\n $name: String!, $grantTypes: [String!], $redirectUris: [String!],\n $resources: [String!], $allowedScopes: [String!]\n ) {\n createClient(\n name: $name, grantTypes: $grantTypes, redirectUris: $redirectUris,\n resources: $resources, allowedScopes: $allowedScopes\n ) {\n secret client { clientId name }\n }\n }\n `;\n\n const SAML = `\n mutation Saml(\n $name: String!, $entityId: String!, $acsUrls: [String!]!, $certificate: String, $requestsSigned: Boolean,\n $sloUrl: String\n ) {\n createSamlApplication(\n name: $name, entityId: $entityId, acsUrls: $acsUrls, certificate: $certificate, requestsSigned: $requestsSigned,\n sloUrl: $sloUrl\n ) {\n client { clientId name }\n }\n }\n `;\n\n const KINDS = [\n [\"service\", [\"client_credentials\"]],\n [\"app\", [\"authorization_code\", \"refresh_token\"]],\n [\"saml\", []],\n [\"preset\", []],\n ];\n\n const ADD_APP = `\n mutation AddApp($preset: ID!, $baseUrl: String!, $name: String, $slug: String) {\n addApp(preset: $preset, baseUrl: $baseUrl, name: $name, slug: $slug) {\n client { clientId name } secret guide settings { label value }\n }\n }\n `;\n\n const COLUMNS = [\n t(\"clients.columns.name\"),\n { label: t(\"clients.columns.resources\"), hide: true },\n { label: t(\"clients.columns.registered\"), hide: true },\n ];\n\n const feedback = createFeedback();\n\n let adding = $state(false);\n let busy = $state(false);\n let created = $state(null);\n let supported = $state([]);\n let presets = $state([]);\n let draft = $state(blank());\n\n function blank() {\n return {\n name: \"\",\n kind: \"service\",\n redirects: \"\",\n resources: \"\",\n scopes: [],\n metadata: \"\",\n entityId: \"\",\n certificate: \"\",\n sloUrl: \"\",\n requestsSigned: false,\n preset: \"\",\n baseUrl: \"\",\n slug: \"\",\n };\n }\n\n const chosen = $derived(presets.find((preset) => preset.key === draft.preset));\n\n const lines = (text) =>\n text\n .split(\"\\n\")\n .map((one) => one.trim())\n .filter(Boolean);\n\n async function open() {\n draft = blank();\n created = null;\n adding = true;\n feedback.clear();\n\n if (supported.length) return;\n\n const data = await feedback.attempt(() =>\n api.query(\"query Scopes { scopesSupported appPresets { key name asks guide } }\"),\n );\n\n if (!data) return;\n\n supported = data.scopesSupported;\n presets = data.appPresets;\n }\n\n async function readMetadata() {\n const data = await feedback.attempt(() =>\n api.query(\n `mutation Read($xml: String!) {\n readSamlApplicationMetadata(xml: $xml) { entityId acsUrls certificate requestsSigned sloUrl }\n }`,\n { xml: draft.metadata },\n ),\n );\n\n if (!data) return;\n\n const read = data.readSamlApplicationMetadata;\n\n draft.entityId = read.entityId ?? draft.entityId;\n draft.redirects = read.acsUrls.join(\"\\n\") || draft.redirects;\n draft.certificate = read.certificate ?? draft.certificate;\n draft.sloUrl = read.sloUrl ?? draft.sloUrl;\n draft.requestsSigned = read.requestsSigned;\n }\n\n function request() {\n if (draft.kind === \"preset\") {\n return [\n ADD_APP,\n {\n preset: draft.preset,\n baseUrl: draft.baseUrl.trim(),\n name: draft.name.trim() || null,\n slug: draft.slug.trim() || null,\n },\n \"addApp\",\n ];\n }\n\n if (draft.kind === \"saml\") {\n return [\n SAML,\n {\n name: draft.name.trim(),\n entityId: draft.entityId.trim(),\n acsUrls: lines(draft.redirects),\n certificate: draft.certificate.trim() || null,\n requestsSigned: draft.requestsSigned,\n sloUrl: draft.sloUrl.trim() || null,\n },\n \"createSamlApplication\",\n ];\n }\n\n return [\n CREATE,\n {\n name: draft.name.trim(),\n grantTypes: KINDS.find(([key]) => key === draft.kind)[1],\n redirectUris: draft.kind === \"app\" ? lines(draft.redirects) : [],\n resources: lines(draft.resources),\n allowedScopes: draft.scopes,\n },\n \"createClient\",\n ];\n }\n\n async function send() {\n const [document, variables, key] = request();\n\n busy = true;\n\n const data = await feedback.attempt(() => api.query(document, variables));\n\n busy = false;\n\n if (!data) return;\n\n created = data[key];\n adding = false;\n\n again();\n }\n\n let search = $state(\"\");\n let query = $state(\"\");\n let archived = $state(false);\n let clients = $state([]);\n let loading = $state(true);\n async function load() {\n loading = true;\n\n const data = await feedback.attempt(() =>\n api.query(QUERY, {\n search: query || null,\n archived,\n afterId: pages.cursor,\n limit: pages.size,\n }),\n );\n\n loading = false;\n\n if (!data) return;\n\n clients = data.clients;\n pages.counted(data.clientCount);\n }\n\n function turn(direction) {\n if (direction === \"forward\") pages.forward(clients.at(-1)?.clientId);\n else pages.back();\n\n load();\n }\n\n load();\n\n function again() {\n pages.reset();\n load();\n }\n\n function look() {\n query = search;\n again();\n }\n\n function toggle(held) {\n archived = held;\n again();\n }\n\n\n const nothing = $derived(\n query\n ? t(archived ? \"clients.empty.archived_matches\" : \"clients.empty.matches\", { query })\n : archived\n ? t(\"clients.empty.archived\")\n : t(\"clients.empty.none\"),\n );\n</script>\n\n<Page title={t(\"clients.title\")}>\n {#snippet actions()}\n <Switch bind:checked={archived} label={t(\"clients.archived\")} onchange={toggle} />\n <Search\n bind:value={search}\n label={t(\"clients.search\")}\n placeholder={t(\"clients.search_placeholder\")}\n onsearch={look}\n />\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={open}>{t(\"clients.add\")}</button>\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if adding}\n <Section title={t(\"clients.add\")}>\n <Field label={t(\"clients.name\")} bind:value={draft.name} placeholder={t(\"clients.name_placeholder\")} />\n\n <div class=\"range\" role=\"group\" aria-label={t(\"clients.kind\")}>\n {#each KINDS as [key] (key)}\n <button type=\"button\" aria-pressed={draft.kind === key} onclick={() => (draft.kind = key)}>\n {t(`clients.kinds.${key}`)}\n </button>\n {/each}\n </div>\n\n {#if draft.kind === \"preset\"}\n <Select\n label={t(\"clients.app\")}\n value={draft.preset}\n options={[[\"\", t(\"clients.choose\")], ...presets.map((preset) => [preset.key, preset.name])]}\n onchange={(key) => {\n draft.preset = key;\n draft.slug = presets.find((preset) => preset.key === key)?.asks?.name ?? \"\";\n }}\n />\n\n <Field label={t(\"clients.address\")} bind:value={draft.baseUrl} placeholder=\"https://grafana.example.com\" />\n\n {#if chosen?.asks?.name}\n <Field label={t(\"clients.slug\")} bind:value={draft.slug} placeholder={chosen.asks.name} />\n {/if}\n {/if}\n\n <p class=\"hint\">\n {draft.kind === \"preset\"\n ? t(\"clients.hints.preset\")\n : draft.kind === \"service\"\n ? t(\"clients.hints.service\")\n : draft.kind === \"saml\"\n ? t(\"clients.hints.saml\")\n : t(\"clients.hints.app\")}\n </p>\n\n {#if draft.kind === \"saml\"}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"clients.metadata\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"3\"\n spellcheck=\"false\"\n placeholder=\"<md:EntityDescriptor …\"\n bind:value={draft.metadata}\n ></textarea>\n </label>\n <button\n type=\"button\"\n class=\"btn btn-sm self-start\"\n disabled={!draft.metadata.trim()}\n onclick={readMetadata}\n >\n {t(\"clients.read\")}\n </button>\n\n <Field label={t(\"clients.entity_id\")} bind:value={draft.entityId} placeholder=\"https://wiki.example.com/saml\" />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"clients.acs\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"2\"\n spellcheck=\"false\"\n placeholder=\"https://wiki.example.com/saml/acs\"\n bind:value={draft.redirects}\n ></textarea>\n </label>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"clients.certificate\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"2\"\n spellcheck=\"false\"\n bind:value={draft.certificate}\n ></textarea>\n </label>\n\n <Field label={t(\"clients.slo_url\")} bind:value={draft.sloUrl} placeholder=\"https://wiki.example.com/saml/slo\" />\n\n <Switch bind:checked={draft.requestsSigned} label={t(\"clients.requests_signed\")} />\n {/if}\n\n {#if draft.kind === \"app\"}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"clients.redirect_uris\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"2\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"https://app.example.com/callback\"\n bind:value={draft.redirects}\n ></textarea>\n </label>\n {/if}\n\n {#if draft.kind !== \"saml\"}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"clients.resources\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"2\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"https://api.example.com/mcp\"\n bind:value={draft.resources}\n ></textarea>\n </label>\n\n <div class=\"flex flex-col gap-2\">\n <span class=\"legend\">{t(\"clients.scopes\")}</span>\n <ScopesEditor\n value={draft.scopes}\n available={supported}\n onchange={(chosen) => (draft.scopes = chosen)}\n />\n </div>\n {/if}\n\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm\"\n disabled={busy ||\n (draft.kind === \"preset\"\n ? !draft.preset || !draft.baseUrl.trim()\n : !draft.name.trim() || (draft.kind === \"saml\" && !draft.entityId.trim()))}\n onclick={send}\n >\n {busy ? t(\"clients.adding\") : t(\"clients.submit\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => (adding = false)}>\n {t(\"clients.cancel\")}\n </button>\n </div>\n </Section>\n {/if}\n\n {#if created}\n <Section title={t(\"clients.created.title\", { name: created.client.name })}>\n <p class=\"text-sm opacity-85\">\n {t(created.secret ? \"clients.created.client_id_and_secret\" : \"clients.created.client_id\")}\n </p>\n\n <p class=\"tray px-2 py-1 font-mono text-xs break-all\">{created.client.clientId}</p>\n\n {#if created.secret}\n <p class=\"tray px-2 py-1 font-mono text-xs break-all\">{created.secret}</p>\n {/if}\n\n {#if created.settings}\n <p class=\"text-sm opacity-85\">\n {t(\"clients.created.settings\", { name: created.client.name })}\n {#if created.guide}<a class=\"link\" href={created.guide} target=\"_blank\" rel=\"noreferrer\">{t(\"clients.created.guide\")}</a>.{/if}\n </p>\n\n <dl class=\"grid gap-x-4 gap-y-2 text-sm md:grid-cols-[auto_1fr]\">\n {#each created.settings as setting (setting.label)}\n <dt class=\"font-mono text-xs opacity-80\">{setting.label}</dt>\n <dd class=\"tray m-0 px-2 py-1 font-mono text-xs break-all whitespace-pre-wrap\">{setting.value}</dd>\n {/each}\n </dl>\n {/if}\n\n <Link to={`/clients/${created.client.clientId}`} class=\"btn btn-sm self-start\">{t(\"clients.created.open\")}</Link>\n </Section>\n {/if}\n\n {#if loading && clients.length === 0}\n <Spinner />\n {:else}\n <Table columns={COLUMNS} count={clients.length} empty={nothing}>\n {#snippet rows()}\n {#each clients as client (client.clientId)}\n <Row to={`/clients/${client.clientId}`}>\n <td class=\"w-full max-w-0 md:w-auto md:max-w-none\">\n <div class=\"flex items-center gap-3\">\n <ClientLogo {client} class=\"size-8 shrink-0 rounded text-sm\" />\n <div class=\"min-w-0\">\n <div class=\"flex min-w-0 items-center gap-2\">\n <Link to={`/clients/${client.clientId}`} class=\"link link-hover truncate font-medium\">\n {client.name}\n </Link>\n <Marks\n marks={[\n client.archivedAt && [\"archived\", t(\"clients.marks.archived\"), \"quiet\"],\n client.dynamic && !client.approvedAt && [\"dynamic\", t(\"clients.marks.dynamic\"), \"warn\"],\n client.dynamic && client.approvedAt && [\"dynamic\", t(\"clients.marks.dynamic_approved\"), \"quiet\"],\n ].filter(Boolean)}\n />\n </div>\n <div class=\"hint truncate font-mono text-xs\" title={client.clientId}>{client.clientId}</div>\n </div>\n </div>\n </td>\n <td class=\"hidden md:table-cell\">\n <div class=\"hint max-w-[18rem] truncate font-mono text-xs\" title={joined(client.resources)}>\n {joined(client.resources) || NONE}\n </div>\n </td>\n <td class=\"hidden text-xs whitespace-nowrap opacity-85 md:table-cell\">{day(client.createdAt)}</td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n\n <Pager {pages} shown={clients.length} busy={loading} onpage={turn} />\n {/if}\n</Page>\n","import { t } from \"./copy.js\";\n\nexport const POLICY_FIELDS = `\n key name signup nickname email emailVerified phone phoneVerified\n passwordMinimum refuseCommonPasswords passwordRequired firstFactors secondFactors secondFactorRequired appsRequireSecondFactor sessionLifetime sessionIdleTimeout refuseBreachedPasswords riskStepUpAt riskRefuseAt proofOfWork\n emailDomains providers confirmation hidden signupScopes archivedAt\n`;\n\nconst FACTORS = [\n \"password\",\n \"passkey\",\n \"provider\",\n \"email_code\",\n \"otp\",\n \"backup_codes\",\n];\n\nconst CONFIRMATIONS = [\"none\", \"code\", \"link\", \"approval\"];\n\nconst PRESENCE = [\"off\", \"optional\", \"required\"];\n\nconst known = (list, group, value) =>\n list.includes(value) ? t(`policy_rules.${group}.${value}`) : value;\n\nconst listed = (values, empty) =>\n values?.length\n ? values.map((value) => known(FACTORS, \"factors\", value)).join(\", \")\n : t(`policy_rules.values.${empty}`);\n\nconst yes = (value) =>\n t(value ? \"policy_rules.answers.yes\" : \"policy_rules.answers.no\");\n\nconst value = (name) => t(`policy_rules.values.${name}`);\n\nconst UNITS = [\n [86400, \"day\"],\n [3600, \"hour\"],\n [60, \"minute\"],\n];\n\nexport function duration(seconds) {\n const [size, unit] = UNITS.find(([held]) => seconds % held === 0) ?? [\n 1,\n \"second\",\n ];\n\n return t(`policy_rules.units.${unit}`, { count: seconds / size });\n}\n\nconst term = (name) => t(`policy_rules.terms.${name}`);\n\nfunction describePolicy(policy) {\n return [\n [term(\"signup\"), policy.signup ? value(\"open\") : value(\"invitation_only\")],\n [term(\"email_domains\"), listed(policy.emailDomains, \"any\")],\n [\n term(\"proof_of_work\"),\n policy.proofOfWork\n ? t(\"policy_rules.values.bits\", { bits: policy.proofOfWork })\n : value(\"off\"),\n ],\n [term(\"hidden\"), yes(policy.hidden)],\n [term(\"nickname\"), known(PRESENCE, \"presence\", policy.nickname)],\n [term(\"email\"), known(PRESENCE, \"presence\", policy.email)],\n [term(\"email_verified\"), yes(policy.emailVerified)],\n [term(\"phone\"), known(PRESENCE, \"presence\", policy.phone)],\n [term(\"phone_verified\"), yes(policy.phoneVerified)],\n [term(\"first_factors\"), listed(policy.firstFactors, \"nothing\")],\n [\n term(\"providers\"),\n policy.providers === null\n ? value(\"every_one\")\n : listed(policy.providers, \"none\"),\n ],\n [\n term(\"password\"),\n t(\n policy.refuseCommonPasswords\n ? \"policy_rules.values.not_common\"\n : \"policy_rules.values.password\",\n {\n minimum: policy.passwordMinimum,\n },\n ),\n ],\n [term(\"password_required\"), yes(policy.passwordRequired)],\n [term(\"second_factors\"), listed(policy.secondFactors, \"none\")],\n [term(\"second_factor_required\"), yes(policy.secondFactorRequired)],\n [term(\"apps_require_second_factor\"), yes(policy.appsRequireSecondFactor)],\n [\n term(\"session_lifetime\"),\n policy.sessionLifetime\n ? duration(policy.sessionLifetime)\n : value(\"default_lifetime\"),\n ],\n [term(\"refuse_breached\"), yes(policy.refuseBreachedPasswords)],\n [\n term(\"risk_step_up\"),\n policy.riskStepUpAt\n ? t(\"policy_rules.values.at\", { score: policy.riskStepUpAt })\n : value(\"never\"),\n ],\n [\n term(\"risk_refuse\"),\n policy.riskRefuseAt\n ? t(\"policy_rules.values.at\", { score: policy.riskRefuseAt })\n : value(\"never\"),\n ],\n [\n term(\"idle_timeout\"),\n policy.sessionIdleTimeout\n ? duration(policy.sessionIdleTimeout)\n : value(\"never\"),\n ],\n [\n term(\"confirmation\"),\n known(CONFIRMATIONS, \"confirmations\", policy.confirmation),\n ],\n [term(\"signup_scopes\"), listed(policy.signupScopes, \"none\")],\n ];\n}\n\nexport function policyDifferences(chosen, fallback) {\n const theirs = new Map(describePolicy(fallback));\n\n return describePolicy(chosen)\n .filter(([term, value]) => theirs.get(term) !== value)\n .map(([term, value]) => ({ term, value, instead: theirs.get(term) }));\n}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n\n let { api, rows, onreleased, showClient = false, row = false } = $props();\n\n const RELEASE = `\n mutation Release($name: String!) {\n releaseNamespace(name: $name) { released }\n }\n `;\n\n const feedback = createFeedback();\n\n async function release(held) {\n if (\n !confirm(t(\"namespaces.release_confirm\", { name: held.name }))\n )\n return;\n\n const done = await feedback.attempt(\n () => api.query(RELEASE, { name: held.name }),\n t(\"namespaces.released\", { name: held.name }),\n );\n\n if (done) await onreleased();\n }\n</script>\n\n<Section {row} title={t(\"namespaces.title\")}>\n <Notices feedback={feedback.state} />\n\n <ul class=\"compact-list\">\n {#each rows as held (held.name)}\n <li class=\"flex-wrap\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"text-sm\">\n <code class=\"font-mono\">{held.name}</code>\n {#if showClient}\n <span class=\"hint\">\n ·\n {#if held.client}\n <Link to={`/clients/${held.client.clientId}`} class=\"link link-hover\">{held.client.name}</Link>\n {:else}\n {t(\"namespaces.nothing\")}\n {/if}\n </span>\n {/if}\n </span>\n <span class=\"hint truncate text-xs\"><span class=\"font-mono\" title={held.resource}>{held.resource}</span> · {day(held.claimedAt)}</span>\n </div>\n\n <div class=\"ml-auto\">\n {#if held.releasable}\n <button type=\"button\" class=\"btn btn-xs btn-error btn-outline\" onclick={() => release(held)}>\n {t(\"namespaces.release\")}\n </button>\n {:else}\n <span class=\"hint text-xs\">{t(\"namespaces.archive_to_release\")}</span>\n {/if}\n </div>\n </li>\n {/each}\n </ul>\n</Section>\n","<script>\n import { t } from \"../lib/copy.js\";\n import { untrack } from \"svelte\";\n\n let { label, hint = null, value = [], onsave, save = t(\"ui.save\"), rows = 3 } = $props();\n\n let draft = $state(untrack(() => value.join(\"\\n\")));\n let held = $state(untrack(() => value.join(\"\\n\")));\n\n $effect(() => {\n const fresh = value.join(\"\\n\");\n\n if (fresh === held) return;\n\n held = fresh;\n draft = fresh;\n });\n\n const changed = $derived(draft !== held);\n\n const lines = () =>\n draft\n .split(\"\\n\")\n .map((one) => one.trim())\n .filter(Boolean);\n</script>\n\n<label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{label}</span>\n\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n {rows}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n bind:value={draft}\n ></textarea>\n\n {#if hint}\n <span class=\"hint\">{hint}</span>\n {/if}\n\n <button\n type=\"button\"\n class=\"btn btn-sm self-start\"\n disabled={!changed}\n onclick={() => onsave(lines())}\n >\n {save}\n </button>\n</label>\n","<script>\n import Parts from \"./ui/Parts.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, joined } from \"./lib/format.js\";\n import { POLICY_FIELDS, policyDifferences } from \"./lib/policies.js\";\n import Consents from \"./Consents.svelte\";\n import Events from \"./Events.svelte\";\n import Namespaces from \"./Namespaces.svelte\";\n import Tokens from \"./Tokens.svelte\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import ClientLogo from \"./ui/ClientLogo.svelte\";\n import Facts from \"./ui/Facts.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n import Lines from \"./ui/Lines.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import { t } from \"./lib/copy.js\";\n\n let { api, clientId, part = null } = $props();\n\n const QUERY = `\n query Client($clientId: ID!) {\n client(clientId: $clientId) {\n clientId name dynamic approvedAt archivedAt secretExpiresAt createdAt\n tokenEndpointAuthMethod applicationType clientUri logoUri tosUri policyUri logoUrl(size: 128)\n subjectType sectorIdentifierUri\n redirectUris postLogoutRedirectUris grantTypes responseTypes resources\n requiredScopes allowedScopes allowedGroups\n backchannelLogoutUri backchannelLogoutSessionRequired\n requirePushedAuthorizationRequests requireSignedRequestObject consentRequired jwks jwksUri\n authorizationDetailsTypes authorizationDetailsSchemas consentLifetime\n accessTokenLifetime refreshTokenLifetime\n protocol samlEntityId samlCertificate samlNameIdFormat samlRequestsSigned samlIdpInitiated samlAttributes samlSloUrl\n signInPolicy { ${POLICY_FIELDS} }\n events(limit: 25) {\n id action label createdAt ipAddress details\n actor { uuid identifier }\n by { uuid identifier }\n device { id label }\n }\n approvedBy { identifier }\n namespaces { name resource claimedAt releasable }\n consents(limit: 25) {\n id scopes audience updatedAt expiresAt authorizationDetails\n actor { uuid identifier }\n }\n tokens(limit: 25) {\n id kind scopes audience parentId createdAt expiresAt\n actor { uuid identifier }\n device { id label }\n }\n }\n scopesSupported\n groups { key name }\n samlMetadataUrl\n signInPolicies { key name }\n defaultSignInPolicy { ${POLICY_FIELDS} }\n }\n `;\n\n const feedback = createFeedback();\n\n let client = $state(null);\n let supported = $state([]);\n let groups = $state([]);\n let roles = $state(\"\");\n let policies = $state([]);\n let fallbackPolicy = $state(null);\n let name = $state(\"\");\n let logoutUri = $state(\"\");\n let jwksUri = $state(\"\");\n let jwks = $state(\"\");\n let declared = $state(\"\");\n let lasts = $state(\"\");\n let accessMinutes = $state(\"\");\n let refreshDays = $state(\"\");\n let method = $state(\"\");\n let sector = $state(\"\");\n let metadataUrl = $state(\"\");\n let certificate = $state(\"\");\n let entityId = $state(\"\");\n let sloUrl = $state(\"\");\n let links = $state({});\n let attributes = $state(\"\");\n let loading = $state(true);\n let secret = $state(null);\n\n const NAME_IDS = [\n [\"urn:oasis:names:tc:SAML:2.0:nameid-format:persistent\", t(\"client.name_ids.persistent\")],\n [\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\", t(\"client.name_ids.email\")],\n ];\n\n const saml = $derived(client?.protocol === \"saml\");\n\n const facts = $derived(\n client\n ? [\n {\n term: t(\"client.facts.origin\"),\n value: client.dynamic ? t(\"client.facts.self_registered\") : t(\"client.facts.approved\"),\n },\n { term: t(\"client.facts.approved_by\"), value: client.approvedBy?.identifier },\n { term: t(\"client.facts.registered\"), value: day(client.createdAt) },\n { term: t(\"client.facts.grants\"), value: joined(client.grantTypes), mono: true },\n { term: t(\"client.facts.response_types\"), value: joined(client.responseTypes), mono: true },\n ]\n : [],\n );\n\n const SUBJECTS = [\n [\"public\", t(\"client.subjects.public\")],\n [\"pairwise\", t(\"client.subjects.pairwise\")],\n ];\n\n const GRANTS = [\n [\"refresh_token\", t(\"client.grants.refresh_token\")],\n [\"urn:ietf:params:oauth:grant-type:device_code\", t(\"client.grants.device_code\")],\n [\"urn:ietf:params:oauth:grant-type:token-exchange\", t(\"client.grants.token_exchange\")],\n ];\n\n const LINKS = [\n [\"logoUri\", \"logo_uri\", \"https://app.example.com/logo.png\"],\n [\"clientUri\", \"client_uri\", \"https://app.example.com\"],\n [\"tosUri\", \"tos_uri\", \"https://app.example.com/terms\"],\n [\"policyUri\", \"policy_uri\", \"https://app.example.com/privacy\"],\n ].map(([key, copy, placeholder]) => [key, t(`client.links.${copy}.label`), placeholder]);\n\n async function saveLinks() {\n const changes = Object.fromEntries(LINKS.map(([key]) => [key, links[key].trim() || null]));\n const logoChanged = changes.logoUri && changes.logoUri !== client.logoUri;\n\n await update(changes, t(\"client.notices.saved\"));\n\n if (logoChanged) setTimeout(load, 3000);\n }\n\n function saveLifetimes() {\n return update(\n {\n accessTokenLifetime: accessMinutes ? Number(accessMinutes) * 60 : 0,\n refreshTokenLifetime: refreshDays ? Number(refreshDays) * 86400 : 0,\n consentLifetime: lasts ? Number(lasts) * 86400 : 0,\n },\n t(\"client.notices.saved\"),\n );\n }\n\n const SAML_DEFAULTS = \"email = email\\nname = name\\ngiven_name = given_name\\nfamily_name = family_name\\npreferred_username = preferred_username\";\n\n const differences = $derived(\n client?.signInPolicy && fallbackPolicy ? policyDifferences(client.signInPolicy, fallbackPolicy) : [],\n );\n\n const keyed = $derived(Boolean(client?.jwks || client?.jwksUri));\n\n const mapped = (held) =>\n Object.entries(held ?? {})\n .map(([attribute, claim]) => `${attribute} = ${claim}`)\n .join(\"\\n\");\n\n async function load() {\n loading = true;\n\n try {\n const data = await api.query(QUERY, { clientId });\n\n client = data.client;\n supported = data.scopesSupported;\n groups = data.groups;\n roles = (data.client?.allowedGroups ?? []).filter((held) => held.includes(\":\")).join(\", \");\n policies = data.signInPolicies;\n fallbackPolicy = data.defaultSignInPolicy;\n name = data.client?.name ?? \"\";\n logoutUri = data.client?.backchannelLogoutUri ?? \"\";\n jwksUri = data.client?.jwksUri ?? \"\";\n jwks = data.client?.jwks ? JSON.stringify(data.client.jwks, null, 2) : \"\";\n lasts = data.client?.consentLifetime ? String(Math.round(data.client.consentLifetime / 86400)) : \"\";\n accessMinutes = data.client?.accessTokenLifetime ? String(Math.round(data.client.accessTokenLifetime / 60)) : \"\";\n refreshDays = data.client?.refreshTokenLifetime ? String(Math.round(data.client.refreshTokenLifetime / 86400)) : \"\";\n declared = Object.keys(data.client?.authorizationDetailsSchemas ?? {}).length\n ? JSON.stringify(data.client.authorizationDetailsSchemas, null, 2)\n : \"\";\n method = data.client?.tokenEndpointAuthMethod ?? \"\";\n sector = data.client?.sectorIdentifierUri ?? \"\";\n metadataUrl = data.samlMetadataUrl;\n certificate = data.client?.samlCertificate ?? \"\";\n entityId = data.client?.samlEntityId ?? \"\";\n sloUrl = data.client?.samlSloUrl ?? \"\";\n links = Object.fromEntries(LINKS.map(([key]) => [key, data.client?.[key] ?? \"\"]));\n attributes = mapped(data.client?.samlAttributes);\n } catch (thrown) {\n feedback.blame(thrown);\n } finally {\n loading = false;\n }\n }\n\n load();\n\n async function act(document, variables, notice) {\n const data = await feedback.attempt(() => api.query(document, variables), notice);\n\n if (data) await load();\n\n return data;\n }\n\n const update = (changes, notice) =>\n act(\n `mutation Update(\n $clientId: ID!, $name: String, $requiredScopes: [String!], $allowedScopes: [String!],\n $backchannelLogoutUri: String, $redirectUris: [String!],\n $postLogoutRedirectUris: [String!], $resources: [String!],\n $requirePushedAuthorizationRequests: Boolean, $consentRequired: Boolean,\n $signInPolicy: ID, $grantTypes: [String!], $jwksUri: String,\n $tokenEndpointAuthMethod: String, $requireSignedRequestObject: Boolean,\n $samlCertificate: String, $samlRequestsSigned: Boolean, $samlIdpInitiated: Boolean,\n $samlNameIdFormat: String, $samlEntityId: String, $samlAttributes: JSON, $samlSloUrl: String, $jwks: JSON,\n $subjectType: String, $sectorIdentifierUri: String, $dpopBoundAccessTokens: Boolean,\n $backchannelLogoutSessionRequired: Boolean, $clientUri: String, $logoUri: String,\n $tosUri: String, $policyUri: String, $authorizationDetailsTypes: [String!],\n $authorizationDetailsSchemas: JSON, $consentLifetime: Int, $allowedGroups: [String!],\n $accessTokenLifetime: Int, $refreshTokenLifetime: Int\n ) {\n updateClient(\n clientId: $clientId, name: $name, requiredScopes: $requiredScopes,\n allowedScopes: $allowedScopes, backchannelLogoutUri: $backchannelLogoutUri,\n redirectUris: $redirectUris, postLogoutRedirectUris: $postLogoutRedirectUris,\n resources: $resources,\n requirePushedAuthorizationRequests: $requirePushedAuthorizationRequests,\n consentRequired: $consentRequired,\n signInPolicy: $signInPolicy,\n grantTypes: $grantTypes,\n jwksUri: $jwksUri,\n tokenEndpointAuthMethod: $tokenEndpointAuthMethod,\n requireSignedRequestObject: $requireSignedRequestObject,\n samlCertificate: $samlCertificate,\n samlRequestsSigned: $samlRequestsSigned,\n samlIdpInitiated: $samlIdpInitiated,\n samlNameIdFormat: $samlNameIdFormat,\n samlEntityId: $samlEntityId,\n samlAttributes: $samlAttributes,\n samlSloUrl: $samlSloUrl,\n jwks: $jwks,\n subjectType: $subjectType,\n sectorIdentifierUri: $sectorIdentifierUri,\n dpopBoundAccessTokens: $dpopBoundAccessTokens,\n backchannelLogoutSessionRequired: $backchannelLogoutSessionRequired,\n clientUri: $clientUri,\n logoUri: $logoUri,\n tosUri: $tosUri,\n policyUri: $policyUri,\n authorizationDetailsTypes: $authorizationDetailsTypes,\n authorizationDetailsSchemas: $authorizationDetailsSchemas,\n consentLifetime: $consentLifetime\n accessTokenLifetime: $accessTokenLifetime\n refreshTokenLifetime: $refreshTokenLifetime\n allowedGroups: $allowedGroups\n ) {\n client { clientId }\n }\n }`,\n { clientId, ...changes },\n notice,\n );\n\n const roleList = (value) =>\n value\n .split(/[\\s,]+/)\n .map((held) => held.trim())\n .filter((held) => held.includes(\":\"));\n\n function admit(key, on) {\n const held = client.allowedGroups.filter((group) => group !== key);\n\n update({ allowedGroups: on ? [...held, key] : held }, t(\"client.notices.groups\"));\n }\n\n function saveRoles() {\n const kept = client.allowedGroups.filter((group) => !group.includes(\":\"));\n\n update({ allowedGroups: [...kept, ...roleList(roles)] }, t(\"client.notices.groups\"));\n }\n\n const unattended = $derived(client?.grantTypes.includes(\"client_credentials\") ?? false);\n\n const granting = (grant, on) =>\n on ? [...new Set([...client.grantTypes, grant])] : client.grantTypes.filter((held) => held !== grant);\n\n function signsInAsItself(on) {\n update(\n { grantTypes: granting(\"client_credentials\", on) },\n on\n ? t(\"client.notices.unattended_on\")\n : t(\"client.notices.unattended_off\"),\n );\n }\n\n function knowsActorsAs(chosen) {\n const question = t(\"client.confirm.subject\");\n\n if (chosen === client.subjectType || !confirm(question)) {\n load();\n return;\n }\n\n update({ subjectType: chosen }, t(\"client.notices.subject\"));\n }\n\n function saveKeys(held) {\n const pending = method === \"private_key_jwt\" && client.tokenEndpointAuthMethod !== \"private_key_jwt\";\n const changes = pending ? { ...held, tokenEndpointAuthMethod: method } : held;\n\n update(changes, pending ? t(\"client.notices.keys_signing\") : t(\"client.notices.keys\"));\n }\n\n function saveKeySet() {\n const text = jwks.trim();\n\n if (!text) {\n saveKeys({ jwks: null });\n return;\n }\n\n try {\n saveKeys({ jwks: JSON.parse(text), jwksUri: null });\n } catch {\n feedback.blame(new Error(t(\"client.errors.jwks\")));\n }\n }\n\n function saveDeclared() {\n const text = declared.trim();\n\n try {\n update({ authorizationDetailsSchemas: text ? JSON.parse(text) : {} }, t(\"client.notices.declared\"));\n } catch {\n feedback.blame(new Error(t(\"client.errors.declared\")));\n }\n }\n\n function saveAttributes() {\n const pairs = attributes\n .split(\"\\n\")\n .map((line) => line.trim())\n .filter(Boolean)\n .map((line) => line.split(\"=\").map((part) => part.trim()));\n\n if (pairs.some((pair) => pair.length !== 2 || !pair[0] || !pair[1])) {\n feedback.blame(new Error(t(\"client.errors.attributes\")));\n return;\n }\n\n update(\n { samlAttributes: Object.fromEntries(pairs) },\n pairs.length ? t(\"client.notices.attributes\") : t(\"client.notices.attributes_default\"),\n );\n }\n\n const METHODS = [\n [\"client_secret_basic\", t(\"client.methods.client_secret_basic\")],\n [\"client_secret_post\", t(\"client.methods.client_secret_post\")],\n [\"private_key_jwt\", t(\"client.methods.private_key_jwt\")],\n ];\n\n function authenticates(chosen) {\n method = chosen;\n\n if (chosen === \"private_key_jwt\" && !keyed) return;\n\n const notice =\n chosen === \"private_key_jwt\"\n ? t(\"client.notices.signs_assertions\")\n : client.tokenEndpointAuthMethod === \"private_key_jwt\"\n ? t(\"client.notices.uses_secret\")\n : t(\"client.notices.saved\");\n\n update({ tokenEndpointAuthMethod: chosen }, notice);\n }\n\n function restore() {\n if (!confirm(t(\"client.confirm.restore\"))) return;\n\n act(\n `mutation Restore($clientId: ID!) {\n restoreClient(clientId: $clientId) { client { archivedAt } }\n }`,\n { clientId },\n t(\"client.notices.restored\"),\n );\n }\n\n async function rotate() {\n if (!confirm(t(\"client.confirm.rotate\"))) return;\n\n const data = await act(\n `mutation Rotate($clientId: ID!) { rotateClientSecret(clientId: $clientId) { secret } }`,\n { clientId },\n t(\"client.notices.rotated\"),\n );\n\n if (data) secret = data.rotateClientSecret.secret;\n }\n\n function archive() {\n if (!confirm(t(\"client.confirm.archive\"))) return;\n\n act(\n `mutation Archive($clientId: ID!) { archiveClient(clientId: $clientId) { client { archivedAt } } }`,\n { clientId },\n t(\"client.notices.archived\"),\n );\n }\n</script>\n\n{#if loading && !client}\n <Spinner />\n{:else if !client}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">\n {feedback.state.failure ?? t(\"client.missing\")}\n </div>\n{:else}\n <Page title={client.name} id={client.clientId} back={{ to: \"/clients\", label: t(\"client.back\") }}>\n <Notices feedback={feedback.state} />\n\n {#if client.archivedAt}\n <div class=\"alert alert-warning alert-soft flex-wrap items-center gap-3 text-sm\" role=\"status\">\n <span>{t(\"client.archived_on\", { day: day(client.archivedAt) })}</span>\n <button type=\"button\" class=\"btn btn-sm\" onclick={restore}>{t(\"client.restore\")}</button>\n </div>\n {/if}\n\n {#if secret}\n <div class=\"alert alert-warning alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"client.secret_once\")}</span>\n <code class=\"font-mono text-sm break-all\">{secret}</code>\n </div>\n {/if}\n\n <Parts\n base={`/clients/${clientId}`}\n {part}\n label={t(\"client.parts.label\")}\n parts={[\n [null, \"\", t(\"client.parts.general\")],\n [\"access\", \"/access\", t(\"client.parts.access\")],\n [\"endpoints\", \"/endpoints\", t(\"client.parts.endpoints\")],\n [\"usage\", \"/usage\", t(\"client.parts.usage\")],\n ]}\n />\n\n <div class=\"grid gap-4\">\n {#if part === \"access\"}\n <Section\n row\n title={t(\"client.groups.title\")}\n lede={t(\"client.groups.lede\")}\n >\n {#if groups.length}\n <div class=\"flex flex-col gap-1\">\n {#each groups as group (group.key)}\n <label class=\"flex items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n class=\"checkbox checkbox-sm\"\n checked={client.allowedGroups.includes(group.key)}\n onchange={(event) => admit(group.key, event.currentTarget.checked)}\n />\n {group.name} <code class=\"hint font-mono\">{group.key}</code>\n </label>\n {/each}\n </div>\n {:else}\n <p class=\"text-sm opacity-85\">\n {t(\"client.groups.none\")} <Link to=\"/settings\">{t(\"client.groups.add\")}</Link> {t(\"client.groups.limit\")}\n </p>\n {/if}\n\n <Field\n label={t(\"client.groups.roles\")}\n bind:value={roles}\n placeholder=\"acme:owner, acme:billing\"\n onsave={saveRoles}\n />\n\n <p class=\"hint\">\n {client.allowedGroups.length\n ? t(\"client.groups.only\", { groups: client.allowedGroups.join(\", \") })\n : t(\"client.groups.everyone\")}\n </p>\n </Section>\n\n <Section row title={t(\"client.scopes.title\")}>\n <div class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.scopes.always\")}</span>\n <ScopesEditor\n value={client.requiredScopes}\n available={supported}\n onchange={(requiredScopes) => update({ requiredScopes }, t(\"client.notices.scopes\"))}\n />\n </div>\n\n <div class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.scopes.on_request\")}</span>\n <ScopesEditor\n value={client.allowedScopes}\n available={supported}\n onchange={(allowedScopes) => update({ allowedScopes }, t(\"client.notices.scopes\"))}\n />\n </div>\n </Section>\n {:else if part === \"endpoints\"}\n <Section row title={t(\"client.uris.title\")}>\n <Lines\n label={saml ? t(\"client.uris.acs\") : t(\"client.uris.redirect\")}\n value={client.redirectUris}\n onsave={(redirectUris) => update({ redirectUris }, t(\"client.notices.redirects\"))}\n />\n\n <Lines\n label={t(\"client.uris.post_logout\")}\n value={client.postLogoutRedirectUris}\n onsave={(postLogoutRedirectUris) =>\n update({ postLogoutRedirectUris }, t(\"client.notices.post_logout\"))}\n />\n\n <Lines\n label={t(\"client.uris.resources\")}\n value={client.resources}\n onsave={(resources) => update({ resources }, t(\"client.notices.resources\"))}\n />\n </Section>\n\n {#if !saml}\n <Section row title={t(\"client.keys.title\")}>\n <p class=\"hint\">\n {t(\"client.keys.hint\")}\n </p>\n\n <Field\n label={t(\"client.keys.jwks_uri\")}\n bind:value={jwksUri}\n placeholder=\"https://app.example.com/.well-known/jwks.json\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={() => saveKeys(jwksUri.trim() ? { jwksUri: jwksUri.trim(), jwks: null } : { jwksUri: null })}\n />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.keys.jwks\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"4\"\n spellcheck=\"false\"\n placeholder={'{ \"keys\": [ ... ] }'}\n bind:value={jwks}\n ></textarea>\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={saveKeySet}>{t(\"client.save\")}</button>\n </label>\n\n {#if keyed}\n <Switch\n checked={client.requireSignedRequestObject}\n label={t(\"client.keys.jar\")}\n onchange={(on) =>\n update(\n { requireSignedRequestObject: on },\n on\n ? t(\"client.notices.jar_on\")\n : t(\"client.notices.jar_off\"),\n )}\n />\n {/if}\n </Section>\n {/if}\n\n {#if !saml}\n <Section row title={t(\"client.details.title\")}>\n <p class=\"hint\">\n {t(\"client.details.hint\")}\n </p>\n\n <Lines\n label={t(\"client.details.types\")}\n value={client.authorizationDetailsTypes}\n onsave={(authorizationDetailsTypes) => update({ authorizationDetailsTypes }, t(\"client.notices.types\"))}\n />\n\n {#if client.approvedAt}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.details.accepts\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"6\"\n spellcheck=\"false\"\n placeholder={'{ \"payment_initiation\": { \"label\": \"Send a payment\", \"schema\": { \"type\": \"object\" } } }'}\n bind:value={declared}\n ></textarea>\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={saveDeclared}>{t(\"client.save\")}</button>\n </label>\n {/if}\n </Section>\n {/if}\n {:else if part === \"usage\"}\n <Section title={t(\"client.consents\")}>\n <Consents {api} {feedback} rows={client.consents} onchange={load} showActor />\n </Section>\n\n <Section title={t(\"client.tokens\")}>\n <Tokens {api} {feedback} rows={client.tokens} onchange={load} showActor />\n </Section>\n\n <Section title={t(\"client.activity.title\")}>\n {#snippet actions()}\n <Link to={`/activity?client=${client.clientId}`} class=\"btn btn-ghost btn-sm\">{t(\"client.activity.all\")}</Link>\n {/snippet}\n\n <Events events={client.events} empty={t(\"client.activity.empty\")} />\n </Section>\n\n {#if client.namespaces.length}\n <Namespaces {api} rows={client.namespaces} onreleased={load} />\n {/if}\n {:else}\n <Section row title={t(\"client.registration.title\")}>\n <Field label={t(\"client.registration.name\")} bind:value={name} onsave={() => update({ name }, t(\"client.notices.renamed\"))} />\n\n <Facts rows={facts} />\n\n {#if saml}\n <p class=\"hint\">{t(\"client.registration.saml\")}</p>\n {:else if client.tokenEndpointAuthMethod === \"none\"}\n <p class=\"hint\">{t(\"client.registration.public\")}</p>\n {:else}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.registration.authenticates\")}</span>\n <select\n class=\"select select-sm w-full\"\n value={method}\n onchange={(event) => authenticates(event.currentTarget.value)}\n >\n {#each METHODS as [key, label] (key)}\n <option value={key}>{label}</option>\n {/each}\n </select>\n </label>\n {/if}\n\n {#if method === \"private_key_jwt\" && !keyed}\n <p class=\"text-xs text-warning\">{t(\"client.registration.needs_keys\")}</p>\n {/if}\n\n {#if !saml}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.registration.knows_as\")}</span>\n <select\n class=\"select select-sm w-full\"\n value={client.subjectType}\n onchange={(event) => knowsActorsAs(event.currentTarget.value)}\n >\n {#each SUBJECTS as [key, label] (key)}\n <option value={key}>{label}</option>\n {/each}\n </select>\n </label>\n\n {#if client.subjectType === \"pairwise\" || client.sectorIdentifierUri}\n <Field\n label={t(\"client.registration.sector\")}\n bind:value={sector}\n placeholder={t(\"client.registration.sector_placeholder\")}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={() =>\n update(\n { sectorIdentifierUri: sector.trim() || null },\n sector.trim() ? t(\"client.notices.saved\") : t(\"client.notices.cleared\"),\n )}\n />\n {/if}\n\n {#each GRANTS as [grant, label] (grant)}\n <Switch\n checked={client.grantTypes.includes(grant)}\n {label}\n onchange={(on) => update({ grantTypes: granting(grant, on) }, t(\"client.notices.grants\"))}\n />\n {/each}\n {/if}\n\n {#if client.approvedAt && client.tokenEndpointAuthMethod !== \"none\"}\n <Switch\n checked={unattended}\n label={t(\"client.registration.unattended\")}\n onchange={signsInAsItself}\n />\n {/if}\n\n <div class=\"flex flex-wrap gap-2 pt-1\">\n {#if client.tokenEndpointAuthMethod.startsWith(\"client_secret\")}\n <button type=\"button\" class=\"btn btn-sm\" onclick={rotate}>{t(\"client.registration.rotate\")}</button>\n {/if}\n {#if !client.archivedAt}\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={archive}>\n {t(\"client.registration.archive\")}\n </button>\n {/if}\n </div>\n </Section>\n\n {#if saml}\n <Section row title={t(\"client.saml.title\")}>\n <Field\n label={t(\"client.saml.entity_id\")}\n bind:value={entityId}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={() => update({ samlEntityId: entityId.trim() }, t(\"client.notices.entity_id\"))}\n />\n\n <div class=\"flex flex-col gap-1.5\">\n <Field\n label={t(\"client.saml.slo_url\")}\n bind:value={sloUrl}\n placeholder=\"https://wiki.example.com/saml/slo\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={() =>\n update(\n { samlSloUrl: sloUrl.trim() || null },\n sloUrl.trim() ? t(\"client.notices.saved\") : t(\"client.notices.cleared\"),\n )}\n />\n <span class=\"hint\">{t(\"client.saml.slo_url_hint\")}</span>\n </div>\n\n <Facts\n rows={[\n { term: t(\"client.saml.metadata\"), value: metadataUrl, mono: true },\n { term: t(\"client.saml.initiate\"), value: client.samlIdpInitiated ? `/saml/initiate/${client.clientId}` : null, mono: true },\n ]}\n />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.saml.names_by\")}</span>\n <select\n class=\"select select-sm w-full\"\n value={client.samlNameIdFormat ?? NAME_IDS[0][0]}\n onchange={(event) => update({ samlNameIdFormat: event.currentTarget.value }, t(\"client.notices.saved\"))}\n >\n {#each NAME_IDS as [format, label] (format)}\n <option value={format}>{label}</option>\n {/each}\n </select>\n </label>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.saml.certificate\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"3\"\n spellcheck=\"false\"\n bind:value={certificate}\n ></textarea>\n <button\n type=\"button\"\n class=\"btn btn-sm self-start\"\n onclick={() =>\n update(\n { samlCertificate: certificate.trim() },\n certificate.trim() ? t(\"client.notices.certificate_saved\") : t(\"client.notices.certificate_removed\"),\n )}\n >\n {t(\"client.save\")}\n </button>\n </label>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.saml.attributes\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"5\"\n spellcheck=\"false\"\n placeholder={SAML_DEFAULTS}\n bind:value={attributes}\n ></textarea>\n <span class=\"hint\">{t(\"client.saml.attributes_hint\")}</span>\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={saveAttributes}>{t(\"client.save\")}</button>\n </label>\n\n <Switch\n checked={client.samlRequestsSigned}\n label={t(\"client.saml.requests_signed\")}\n onchange={(on) =>\n update(\n { samlRequestsSigned: on },\n on ? t(\"client.notices.signed_refused\") : t(\"client.notices.signed_read\"),\n )}\n />\n\n <Switch\n checked={client.samlIdpInitiated}\n label={t(\"client.saml.idp_initiated\")}\n onchange={(on) =>\n update(\n { samlIdpInitiated: on },\n on\n ? t(\"client.notices.idp_initiated_on\")\n : t(\"client.notices.idp_initiated_off\"),\n )}\n />\n </Section>\n {/if}\n\n <Section row title={t(\"client.shown.title\")}>\n <div class=\"flex items-center gap-3\">\n <ClientLogo {client} class=\"size-14 rounded-lg border border-base-300 text-xl\" />\n <p class=\"hint\">\n {#if !client.approvedAt}\n {t(\"client.shown.unapproved\")}\n {:else}\n {t(\"client.shown.approved\")}\n {/if}\n </p>\n </div>\n\n <form\n class=\"flex flex-col gap-3\"\n onsubmit={(event) => {\n event.preventDefault();\n saveLinks();\n }}\n >\n {#each LINKS as [key, label, placeholder] (key)}\n <Field {label} bind:value={links[key]} {placeholder} autocapitalize=\"none\" autocorrect=\"off\" spellcheck=\"false\" />\n {/each}\n\n <button type=\"submit\" class=\"btn btn-sm self-start\">{t(\"client.save\")}</button>\n </form>\n </Section>\n\n <Section row title={t(\"client.sign_in.title\")}>\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.sign_in.policy\")}</span>\n <select\n class=\"select select-sm w-full\"\n value={client.signInPolicy?.key ?? \"\"}\n onchange={(event) =>\n update({ signInPolicy: event.currentTarget.value }, t(\"client.notices.policy\"))}\n >\n <option value=\"\">\n {t(\"client.sign_in.default\", { name: fallbackPolicy?.name ?? t(\"client.sign_in.built_in\") })}\n </option>\n {#each policies as policy (policy.key)}\n <option value={policy.key}>{policy.name}</option>\n {/each}\n </select>\n </label>\n\n {#if client.signInPolicy?.archivedAt}\n <p class=\"text-xs text-warning\">\n {t(\"client.sign_in.archived\", { name: client.signInPolicy.name, fallback: fallbackPolicy?.name })}\n </p>\n {:else if client.signInPolicy}\n {#if differences.length}\n <div class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.sign_in.differs\", { name: fallbackPolicy?.name })}</span>\n <dl class=\"grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-sm\">\n {#each differences as { term, value, instead } (term)}\n <dt class=\"opacity-80\">{term}</dt>\n <dd>{value} <span class=\"opacity-75 line-through\">{instead}</span></dd>\n {/each}\n </dl>\n </div>\n {:else}\n <p class=\"hint\">{t(\"client.sign_in.same\", { name: fallbackPolicy?.name })}</p>\n {/if}\n {/if}\n\n {#if !saml}\n <Switch\n checked={client.requirePushedAuthorizationRequests}\n label={t(\"client.sign_in.par\")}\n onchange={(on) =>\n update(\n { requirePushedAuthorizationRequests: on },\n on ? t(\"client.notices.par_on\") : t(\"client.notices.par_off\"),\n )}\n />\n\n <Switch\n checked={client.dpopBoundAccessTokens}\n label={t(\"client.sign_in.dpop\")}\n onchange={(on) =>\n update(\n { dpopBoundAccessTokens: on },\n on ? t(\"client.notices.dpop_on\") : t(\"client.notices.dpop_off\"),\n )}\n />\n {/if}\n\n {#if client.approvedAt}\n <Switch\n checked={client.consentRequired}\n label={t(\"client.sign_in.consent\")}\n onchange={(on) =>\n update(\n { consentRequired: on },\n on\n ? t(\"client.notices.consent_on\")\n : t(\"client.notices.consent_off\"),\n )}\n />\n {/if}\n\n <form\n class=\"flex flex-col gap-3\"\n onsubmit={(event) => {\n event.preventDefault();\n saveLifetimes();\n }}\n >\n <div class=\"grid gap-3 sm:grid-cols-3\">\n <Field label={t(\"client.sign_in.access\")} type=\"number\" min=\"1\" max=\"1440\" bind:value={accessMinutes} />\n <Field label={t(\"client.sign_in.refresh\")} type=\"number\" min=\"1\" max=\"400\" bind:value={refreshDays} />\n <Field label={t(\"client.sign_in.consent_lifetime\")} type=\"number\" min=\"1\" max=\"400\" bind:value={lasts} />\n </div>\n\n <button type=\"submit\" class=\"btn btn-sm self-start\">{t(\"client.save\")}</button>\n </form>\n\n <Field\n label={t(\"client.sign_in.logout\")}\n bind:value={logoutUri}\n placeholder=\"https://app.example.com/logout\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={() =>\n update(\n { backchannelLogoutUri: logoutUri.trim() || null },\n logoutUri.trim() ? t(\"client.notices.saved\") : t(\"client.notices.cleared\"),\n )}\n />\n\n {#if client.backchannelLogoutUri}\n <Switch\n checked={client.backchannelLogoutSessionRequired}\n label={t(\"client.sign_in.logout_session\")}\n onchange={(on) => update({ backchannelLogoutSessionRequired: on }, t(\"client.notices.saved\"))}\n />\n {/if}\n </Section>\n {/if}\n </div>\n </Page>\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { organization, children } = $props();\n</script>\n\n<span class=\"flex flex-wrap items-center gap-2\">\n <Link to={`/organizations/${organization.key}`} class=\"link link-hover font-medium\">{organization.name}</Link>\n {#if organization.ownerCount === 0}\n <span class=\"badge badge-warning badge-xs\">{t(\"organization_cell.no_owner\")}</span>\n {/if}\n</span>\n<span class=\"font-mono text-xs opacity-75\">{organization.key}</span>\n{@render children?.()}\n","<script>\n import { t } from \"./lib/copy.js\";\n\n let { organization, class: klass = \"flex flex-col\" } = $props();\n</script>\n\n<span class={klass}>\n <span>{t(\"organization_headcount.members\", { count: organization.memberCount })}</span>\n {#if organization.pendingCount}\n <span class=\"text-xs opacity-75\">{t(\"organization_headcount.invited\", { count: organization.pendingCount })}</span>\n {/if}\n</span>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day } from \"./lib/format.js\";\n import OrganizationCell from \"./OrganizationCell.svelte\";\n import OrganizationHeadcount from \"./OrganizationHeadcount.svelte\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n\n let { api } = $props();\n\n const router = useRouter();\n const feedback = createFeedback();\n\n const QUERY = `\n query Organizations {\n active: organizations {\n key name roles memberCount ownerCount pendingCount\n signInPolicy { name }\n providers { name }\n }\n archived: organizations(archived: true) { key name memberCount archivedAt }\n }\n `;\n\n const COLUMNS = [\n t(\"organizations.columns.organization\"),\n { label: t(\"organizations.columns.members\"), hide: true },\n { label: t(\"organizations.columns.roles\"), hide: true },\n { label: t(\"organizations.columns.signs_in\"), hide: true },\n ];\n\n let data = $state(null);\n let loading = $state(true);\n let busy = $state(false);\n let draft = $state(null);\n let keyTouched = $state(false);\n\n async function load() {\n loading = true;\n\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n loading = false;\n\n if (answer) data = answer;\n }\n\n load();\n\n const slug = (name) =>\n name\n .toLowerCase()\n .normalize(\"NFKD\")\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n\n function add() {\n draft = { key: \"\", name: \"\" };\n keyTouched = false;\n feedback.clear();\n }\n\n function named(name) {\n draft.name = name;\n if (!keyTouched) draft.key = slug(name);\n }\n\n async function save() {\n busy = true;\n\n const answer = await feedback.attempt(() =>\n api.query(\n `mutation Create($key: ID!, $name: String!) {\n createOrganization(key: $key, name: $name) { organization { key } }\n }`,\n { key: draft.key.trim(), name: draft.name.trim() },\n ),\n );\n\n busy = false;\n\n if (answer) router.go(`/organizations/${answer.createOrganization.organization.key}`);\n }\n\n async function restore(organization) {\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Restore($key: ID!) { restoreOrganization(key: $key) { organization { key } } }`, {\n key: organization.key,\n }),\n t(\"organizations.restored\", { name: organization.name }),\n );\n\n if (done) await load();\n }\n\n function members(organization) {\n const held = t(\"organizations.members\", { count: organization.memberCount });\n\n return organization.pendingCount\n ? t(\"organizations.members_invited\", { members: held, count: organization.pendingCount })\n : held;\n }\n\n function signsIn(organization) {\n return [organization.signInPolicy?.name, ...organization.providers.map((provider) => provider.name)]\n .filter(Boolean)\n .join(\", \");\n }\n</script>\n\n<Page\n title={t(\"organizations.title\")}\n lede={t(\"organizations.lede\")}\n>\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={add}>{t(\"organizations.add\")}</button>\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if draft}\n <Section title={t(\"organizations.add\")} lede={t(\"organizations.add_lede\")}>\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field label={t(\"organizations.name\")} value={draft.name} oninput={(event) => named(event.currentTarget.value)} placeholder=\"Acme\" />\n <Field\n label={t(\"organizations.key\")}\n bind:value={draft.key}\n oninput={() => (keyTouched = true)}\n placeholder=\"acme\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n </div>\n <p class=\"hint\">\n {t(\"organizations.key_hint\")}\n <span class=\"font-mono\">organization={draft.key || t(\"organizations.key_word\")}</span>{t(\"organizations.key_hint_end\")}\n </p>\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm\"\n disabled={busy || !draft.key.trim() || !draft.name.trim()}\n onclick={save}\n >\n {busy ? t(\"organizations.adding\") : t(\"organizations.add\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => (draft = null)}>{t(\"organizations.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n {#if loading && !data}\n <Spinner />\n {:else if data}\n <Table\n columns={COLUMNS}\n count={data.active.length}\n empty={t(\"organizations.empty\")}\n >\n {#snippet rows()}\n {#each data.active as organization (organization.key)}\n <Row to={`/organizations/${organization.key}`}>\n <td>\n <div class=\"flex min-w-0 flex-col gap-0.5\">\n <OrganizationCell {organization}>\n <span class=\"text-xs opacity-85 md:hidden\">{members(organization)}</span>\n </OrganizationCell>\n </div>\n </td>\n <td class=\"hidden text-sm md:table-cell\">\n <OrganizationHeadcount {organization} />\n </td>\n <td class=\"hidden md:table-cell\">\n <div class=\"flex max-w-64 flex-wrap gap-1\">\n {#each organization.roles as role (role)}\n <span class=\"badge badge-ghost badge-sm\">{role}</span>\n {/each}\n </div>\n </td>\n <td class=\"hidden text-sm md:table-cell\">\n <span class:opacity-60={!signsIn(organization)}>{signsIn(organization) || t(\"organizations.tenant_policy\")}</span>\n </td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n\n {#if data.archived.length}\n <Section title={t(\"organizations.archived.title\")} lede={t(\"organizations.archived.lede\")}>\n {#each data.archived as organization (organization.key)}\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <div class=\"flex min-w-0 flex-col\">\n <Link to={`/organizations/${organization.key}`} class=\"link link-hover text-sm font-medium\">\n {organization.name}\n </Link>\n <span class=\"hint\">\n <span class=\"font-mono\">{organization.key}</span>\n {t(\"organizations.archived.detail\", {\n day: day(organization.archivedAt),\n members: t(\"organizations.members\", { count: organization.memberCount }),\n })}\n </span>\n </div>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => restore(organization)}>{t(\"organizations.restore\")}</button>\n </div>\n {/each}\n </Section>\n {/if}\n {/if}\n</Page>\n","<script>\n import Link from \"./Link.svelte\";\n\n let { counts } = $props();\n</script>\n\n<div class=\"tally\">\n {#each counts as count (count.label)}\n {#if count.to}\n <Link to={count.to} class=\"tally-cell\">\n <span class=\"tally-figure\">{count.value}</span>\n <span class=\"tally-label\">{count.label}</span>\n </Link>\n {:else}\n <div class=\"tally-cell\">\n <span class=\"tally-figure\">{count.value}</span>\n <span class=\"tally-label\">{count.label}</span>\n </div>\n {/if}\n {/each}\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, since } from \"./lib/format.js\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Parts from \"./ui/Parts.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Facts from \"./ui/Facts.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Events from \"./Events.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Select from \"./ui/Select.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n import Tally from \"./ui/Tally.svelte\";\n\n let { api, organizationKey, part = null } = $props();\n\n const router = useRouter();\n const feedback = createFeedback();\n\n const BUILT_IN = [\"owner\", \"member\"];\n\n const QUERY = `\n query Organization($key: ID!) {\n organization(key: $key) {\n uuid key name roles archivedAt createdAt\n memberCount ownerCount pendingCount liveTokenCount\n signInPolicy { key }\n providers { key name roleClaim roleMap unmappedRole }\n domains { domain verifiedAt provider { name } }\n provisioningTokens { id }\n members {\n role pending provisioned invitedAs invitedAt expiresAt expired createdAt\n invitedBy { identifier }\n actor { uuid identifier }\n }\n events {\n id action label createdAt ipAddress details\n actor { uuid identifier } by { uuid identifier } client { clientId name } device { id label }\n }\n }\n signInPolicies { key name }\n providers { key name organization { key } }\n }\n `;\n\n const LENSES = [\n [\"all\", t(\"organization.lenses.all\")],\n [\"owners\", t(\"organization.lenses.owners\")],\n [\"invited\", t(\"organization.lenses.invited\")],\n ];\n\n let organization = $state(null);\n let policies = $state([]);\n let providers = $state([]);\n const idle = () => ({ provider: \"\", roleClaim: \"\", roleMap: \"\", unmappedRole: \"\" });\n\n let handing = $state(idle());\n let loading = $state(true);\n let busy = $state(false);\n let adding = $state(null);\n let lens = $state(\"all\");\n let naming = $state(\"\");\n let role = $state(\"\");\n let invited = $state(null);\n\n async function load() {\n loading = true;\n\n const answer = await feedback.attempt(() => api.query(QUERY, { key: organizationKey }));\n\n loading = false;\n\n if (!answer) return;\n\n organization = answer.organization;\n policies = answer.signInPolicies;\n providers = answer.providers;\n\n if (organization) naming = organization.name;\n }\n\n load();\n\n const roleOptions = $derived((organization?.roles ?? []).map((held) => [held, held]));\n\n const holding = $derived(\n Object.fromEntries(\n (organization?.roles ?? []).map((held) => [\n held,\n organization.members.filter((member) => member.role === held).length,\n ]),\n ),\n );\n\n const shown = $derived(\n (organization?.members ?? [])\n .filter((member) =>\n lens === \"owners\" ? member.role === \"owner\" && !member.pending : lens === \"invited\" ? member.pending : true,\n )\n .toSorted(\n (a, b) =>\n Number(a.pending) - Number(b.pending) ||\n Number(b.role === \"owner\") - Number(a.role === \"owner\") ||\n named(a).localeCompare(named(b)),\n ),\n );\n\n const revoking = (plain, tokens) =>\n organization.liveTokenCount\n ? t(tokens, { organization: organization.name, count: organization.liveTokenCount })\n : t(plain, { organization: organization.name });\n\n const counts = $derived(\n organization\n ? [\n {\n label: t(\"organization.counts.members\", { count: organization.memberCount }),\n value: organization.memberCount,\n },\n {\n label: t(\"organization.counts.owners\", { count: organization.ownerCount }),\n value: organization.ownerCount,\n },\n { label: t(\"organization.counts.invitations\"), value: organization.pendingCount },\n { label: t(\"organization.counts.live_tokens\"), value: organization.liveTokenCount },\n ]\n : [],\n );\n\n const facts = $derived(\n organization\n ? [\n { term: t(\"organization.facts.key\"), value: organization.key, mono: true },\n { term: t(\"organization.facts.id\"), value: organization.uuid, mono: true },\n { term: t(\"organization.facts.asked_for_with\"), value: `organization=${organization.key}`, mono: true },\n { term: t(\"organization.facts.created\"), value: day(organization.createdAt) },\n ]\n : [],\n );\n\n function named(member) {\n return member.pending ? (member.invitedAs ?? member.actor.identifier) : member.actor.identifier;\n }\n\n function lastOwner(member) {\n return member.role === \"owner\" && !member.pending && organization.ownerCount === 1;\n }\n\n function status(member) {\n if (member.expired) return t(\"organization.status.expired\", { when: since(member.expiresAt) });\n\n if (member.pending) {\n return member.invitedBy\n ? t(\"organization.status.invited_by\", {\n when: since(member.invitedAt),\n by: member.invitedBy.identifier,\n })\n : t(\"organization.status.invited\", { when: since(member.invitedAt) });\n }\n\n return t(member.provisioned ? \"organization.status.from_directory\" : \"organization.status.since\", {\n day: day(member.createdAt),\n });\n }\n\n async function run(query, variables, notice) {\n busy = true;\n\n const answer = await feedback.attempt(() => api.query(query, variables), notice);\n\n busy = false;\n\n if (answer) await load();\n\n return answer;\n }\n\n function openAdding() {\n adding = { email: \"\", role: \"member\" };\n invited = null;\n feedback.clear();\n }\n\n async function add() {\n const email = adding.email.trim();\n\n invited = null;\n\n const answer = await run(\n `mutation Add($organization: ID!, $email: String!, $role: String!) {\n addMember(organization: $organization, email: $email, role: $role) { delivered url }\n }`,\n { organization: organization.key, email, role: adding.role },\n t(\"organization.notices.invited\", { email, role: adding.role }),\n );\n\n if (!answer) return;\n\n adding = null;\n\n if (!answer.addMember.delivered && answer.addMember.url) invited = answer.addMember.url;\n }\n\n function setRole(member, chosen) {\n run(\n `mutation Role($organization: ID!, $uuid: ID!, $role: String!) {\n setMemberRole(organization: $organization, uuid: $uuid, role: $role) { membership { role } }\n }`,\n { organization: organization.key, uuid: member.actor.uuid, role: chosen },\n t(\"organization.notices.role_set\", { name: named(member), role: chosen }),\n );\n }\n\n function remove(member) {\n const question = member.pending\n ? t(\"organization.questions.withdraw\", { name: named(member) })\n : t(\"organization.questions.remove\", { name: named(member), organization: organization.name });\n\n if (!confirm(question)) return;\n\n run(\n `mutation Remove($organization: ID!, $uuid: ID!) {\n removeMember(organization: $organization, uuid: $uuid) { organization { key } }\n }`,\n { organization: organization.key, uuid: member.actor.uuid },\n member.pending\n ? t(\"organization.notices.withdrawn\", { name: named(member) })\n : t(\"organization.notices.removed\", { name: named(member), organization: organization.name }),\n );\n }\n\n function resend(member) {\n run(\n `mutation Resend($organization: ID!, $uuid: ID!) {\n resendOrganizationInvitation(organization: $organization, uuid: $uuid) { delivered }\n }`,\n { organization: organization.key, uuid: member.actor.uuid },\n t(\"organization.notices.resent\", { name: named(member) }),\n );\n }\n\n function saveRoles(roles, notice) {\n return run(\n `mutation Roles($key: ID!, $roles: [String!]) {\n updateOrganization(key: $key, roles: $roles) { organization { key } }\n }`,\n { key: organization.key, roles },\n notice,\n );\n }\n\n const custom = $derived((organization?.roles ?? []).filter((held) => !BUILT_IN.includes(held)));\n\n async function addRole() {\n const chosen = role.trim().toLowerCase();\n\n if (!chosen) return;\n\n if (\n await saveRoles(\n [...custom, chosen],\n t(\"organization.notices.role_added\", { organization: organization.name, role: chosen }),\n )\n )\n role = \"\";\n }\n\n function dropRole(held) {\n saveRoles(\n custom.filter((kept) => kept !== held),\n t(\"organization.notices.role_dropped\", { organization: organization.name, role: held }),\n );\n }\n\n function rename() {\n run(\n `mutation Rename($key: ID!, $name: String) {\n updateOrganization(key: $key, name: $name) { organization { key } }\n }`,\n { key: organization.key, name: naming.trim() },\n t(\"organization.notices.saved\"),\n );\n }\n\n const lines = (map) =>\n Object.entries(map ?? {})\n .map(([group, held]) => `${group} = ${held}`)\n .join(\"\\n\");\n\n const parsed = (text) =>\n Object.fromEntries(\n text\n .split(\"\\n\")\n .map((line) => line.split(\"=\"))\n .filter((parts) => parts.length === 2 && parts[0].trim() && parts[1].trim())\n .map(([group, held]) => [group.trim(), held.trim()]),\n );\n\n const handable = $derived(\n providers.filter((provider) => !provider.organization),\n );\n\n function pickProvider(key) {\n const held = organization.providers.find((provider) => provider.key === key);\n\n handing = {\n provider: key,\n roleClaim: held?.roleClaim ?? \"\",\n roleMap: lines(held?.roleMap),\n unmappedRole: held?.unmappedRole ?? \"\",\n };\n }\n\n function handOver() {\n run(\n `mutation Hand($key: ID!, $organization: ID, $roleClaim: String, $roleMap: JSON, $unmappedRole: String) {\n setProviderOrganization(key: $key, organization: $organization, roleClaim: $roleClaim, roleMap: $roleMap, unmappedRole: $unmappedRole) {\n provider { key }\n }\n }`,\n {\n key: handing.provider,\n organization: organization.key,\n roleClaim: handing.roleClaim.trim() || null,\n roleMap: parsed(handing.roleMap),\n unmappedRole: handing.unmappedRole || null,\n },\n t(\"organization.notices.provider_saved\"),\n ).then((answer) => {\n if (answer) handing = idle();\n });\n }\n\n function handBack(provider) {\n if (\n !confirm(\n t(\"organization.questions.hand_back\", { provider: provider.name, organization: organization.name }),\n )\n )\n return;\n\n run(\n `mutation Back($key: ID!) { setProviderOrganization(key: $key, organization: null) { provider { key } } }`,\n { key: provider.key },\n t(\"organization.notices.provider_back\", { provider: provider.name }),\n );\n }\n\n function setPolicy(key) {\n run(\n `mutation Policy($key: ID!, $policy: ID!) {\n updateOrganization(key: $key, signInPolicy: $policy) { organization { key } }\n }`,\n { key: organization.key, policy: key },\n t(\"organization.notices.saved\"),\n );\n }\n\n async function archive() {\n if (!confirm(revoking(\"organization.questions.archive\", \"organization.questions.archive_tokens\"))) return;\n\n await run(\n `mutation Archive($key: ID!) { archiveOrganization(key: $key) { organization { key } } }`,\n { key: organization.key },\n t(\"organization.notices.archived\", { organization: organization.name }),\n );\n }\n\n function restore() {\n run(\n `mutation Restore($key: ID!) { restoreOrganization(key: $key) { organization { key } } }`,\n { key: organization.key },\n t(\"organization.notices.restored\", { organization: organization.name }),\n );\n }\n</script>\n\n<Page\n title={organization?.name ?? t(\"organization.title\")}\n id={organization?.key}\n back={{ to: \"/organizations\", label: t(\"organization.back\") }}\n lede={organization\n ? organization.archivedAt\n ? t(\"organization.archived_lede\", { when: since(organization.archivedAt) })\n : t(\"organization.lede\", { key: organization.key })\n : null}\n>\n <Notices feedback={feedback.state} />\n\n {#if loading && !organization}\n <Spinner />\n {:else if !organization}\n <p class=\"hint\">{t(\"organization.missing\", { key: organizationKey })}\n <Link to=\"/organizations\">{t(\"organization.all\")}</Link></p>\n {:else}\n {#if organization.archivedAt}\n <div class=\"alert alert-warning alert-soft flex flex-wrap items-center justify-between gap-3\" role=\"status\">\n <span>{t(\"organization.archived_alert\", { day: day(organization.archivedAt) })}</span>\n <button type=\"button\" class=\"btn btn-sm\" disabled={busy} onclick={restore}>{t(\"organization.restore\")}</button>\n </div>\n {/if}\n\n {#if !organization.archivedAt && organization.ownerCount === 0}\n <div class=\"alert alert-warning alert-soft\" role=\"status\">\n {t(\"organization.ownerless\", { organization: organization.name })}\n </div>\n {/if}\n\n <Tally {counts} />\n\n {#if invited}\n <div class=\"alert alert-info alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"organization.invitation_link\")}</span>\n <code class=\"font-mono text-xs break-all\">{invited}</code>\n </div>\n {/if}\n\n <Parts\n base={`/organizations/${organization.key}`}\n {part}\n label={t(\"organization.parts.label\")}\n parts={[\n [null, \"\", t(\"organization.parts.members\")],\n [\"sign-in\", \"/sign-in\", t(\"organization.parts.sign_in\")],\n [\"roles\", \"/roles\", t(\"organization.parts.roles\")],\n [\"activity\", \"/activity\", t(\"organization.parts.activity\")],\n [\"general\", \"/general\", t(\"organization.parts.general\")],\n ]}\n />\n\n <div class=\"grid gap-4\">\n {#if part === \"sign-in\"}\n <Section row title={t(\"organization.signing_in.policy\")} lede={t(\"organization.signing_in.lede\")}>\n <Select\n name={t(\"organization.signing_in.policy\")}\n value={organization.signInPolicy?.key ?? \"\"}\n options={[[\"\", t(\"organization.signing_in.inherited\")], ...policies.map((policy) => [policy.key, policy.name])]}\n disabled={busy}\n onchange={setPolicy}\n />\n </Section>\n\n <Section row title={t(\"organization.signing_in.providers\")}>\n <div class=\"flex flex-col gap-2\">\n\n {#each organization.providers as provider (provider.key)}\n <div class=\"flex flex-wrap items-center justify-between gap-2 sheet p-3\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"font-medium\">{provider.name}</span>\n <span class=\"hint\">\n {t(\"organization.signing_in.joins_as\", {\n mapping: Object.keys(provider.roleMap).length\n ? Object.entries(provider.roleMap)\n .map(([group, held]) => `${group} → ${held}`)\n .join(\", \")\n : t(\"organization.signing_in.no_groups_mapped\"),\n role: provider.unmappedRole ?? \"member\",\n })}\n </span>\n </div>\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-sm\" disabled={busy} onclick={() => pickProvider(provider.key)}>{t(\"organization.signing_in.edit\")}</button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" disabled={busy} onclick={() => handBack(provider)}>\n {t(\"organization.signing_in.hand_back\")}\n </button>\n </div>\n </div>\n {:else}\n <p class=\"hint\">\n {t(\"organization.signing_in.no_providers\")}\n </p>\n {/each}\n\n {#if handable.length && !handing.provider}\n <Select\n value=\"\"\n name={t(\"organization.signing_in.give_provider\")}\n options={[\n [\"\", t(\"organization.signing_in.give_provider\")],\n ...handable.map((provider) => [provider.key, provider.name]),\n ]}\n onchange={pickProvider}\n />\n {/if}\n </div>\n\n {#if handing.provider}\n <div class=\"flex flex-col gap-3 sheet p-3\">\n <span class=\"font-medium\">\n {providers.find((provider) => provider.key === handing.provider)?.name ?? handing.provider}\n </span>\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field label={t(\"organization.signing_in.groups_claim\")} bind:value={handing.roleClaim} placeholder=\"groups\" />\n <Select\n label={t(\"organization.signing_in.unmapped_role\")}\n value={handing.unmappedRole}\n options={[[\"\", \"member\"], ...roleOptions.filter(([held]) => held !== \"member\")]}\n onchange={(chosen) => (handing.unmappedRole = chosen)}\n />\n </div>\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"organization.signing_in.role_map\")}</span>\n <textarea\n class=\"textarea w-full font-mono\"\n rows=\"3\"\n bind:value={handing.roleMap}\n placeholder=\"Acme Admins = owner\"\n ></textarea>\n <p class=\"hint\">{t(\"organization.signing_in.role_map_hint\")}</p>\n </label>\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy} onclick={handOver}>{t(\"organization.signing_in.save\")}</button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() => (handing = idle())}\n >\n {t(\"organization.signing_in.cancel\")}\n </button>\n </div>\n </div>\n {/if}\n </Section>\n\n <Section row title={t(\"organization.signing_in.domains\")}>\n <div class=\"flex flex-col gap-2\">\n\n {#each organization.domains as claim (claim.domain)}\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <span class=\"font-mono text-sm break-all\">{claim.domain}</span>\n <span class=\"hint\">\n {claim.verifiedAt\n ? t(\"organization.signing_in.proven\", { day: day(claim.verifiedAt) })\n : t(\"organization.signing_in.waiting\")} · {claim.provider?.name}\n </span>\n </div>\n {:else}\n <p class=\"hint\">\n {t(\"organization.signing_in.no_domains\")}\n <Link to=\"/settings\" class=\"link\">{t(\"organization.signing_in.domains_link\")}</Link>\n </p>\n {/each}\n </div>\n </Section>\n\n <Section row title={t(\"organization.signing_in.provisioning\")}>\n <div class=\"flex flex-col gap-2\">\n <p class=\"hint\">\n {organization.provisioningTokens.length\n ? t(\"organization.signing_in.tokens_reach\", { count: organization.provisioningTokens.length })\n : t(\"organization.signing_in.no_tokens\")}\n <Link to=\"/directory\" class=\"link\">{t(\"organization.signing_in.provisioning_link\")}</Link>\n </p>\n </div>\n </Section>\n {:else if part === \"roles\"}\n <Section row title={t(\"organization.roles.title\")} lede={t(\"organization.roles.lede\")}>\n <div class=\"flex flex-wrap gap-2\">\n {#each organization.roles as held (held)}\n <span class=\"badge badge-lg gap-1.5 {BUILT_IN.includes(held) ? 'badge-ghost' : 'badge-outline'}\">\n <span class=\"font-medium\">{held}</span>\n <span class=\"opacity-70\">{holding[held] ?? 0}</span>\n {#if !BUILT_IN.includes(held)}\n <button\n type=\"button\"\n class=\"-mr-1 cursor-pointer px-1 opacity-70 hover:opacity-100 disabled:cursor-not-allowed disabled:opacity-30\"\n aria-label={t(\"organization.roles.stop_offering\", { role: held })}\n title={holding[held]\n ? t(\"organization.roles.held\", { count: holding[held] })\n : t(\"organization.roles.stop_offering\", { role: held })}\n disabled={busy || holding[held] > 0}\n onclick={() => dropRole(held)}\n >\n ×\n </button>\n {/if}\n </span>\n {/each}\n </div>\n <Field\n label={t(\"organization.roles.offer\")}\n bind:value={role}\n placeholder=\"support\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={addRole}\n save={t(\"organization.roles.add\")}\n />\n <p class=\"hint\">{t(\"organization.roles.hint\")}</p>\n </Section>\n {:else if part === \"activity\"}\n <Section lede={t(\"organization.activity.lede\")}>\n <Events events={organization.events} empty={t(\"organization.activity.empty\")} limit={25} collapse />\n </Section>\n {:else if part === \"general\"}\n <Section row title={t(\"organization.details.title\")}>\n <Field label={t(\"organization.details.name\")} bind:value={naming} onsave={rename} />\n <Facts rows={facts} />\n </Section>\n\n {#if !organization.archivedAt}\n <Section\n row\n title={t(\"organization.archive.title\")}\n lede={revoking(\"organization.archive.lede\", \"organization.archive.lede_tokens\")}\n >\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline self-start\" disabled={busy} onclick={archive}>\n {t(\"organization.archive.button\", { organization: organization.name })}\n </button>\n </Section>\n {/if}\n {:else}\n <Section\n title={t(\"organization.members.title\")}\n lede={t(\"organization.members.lede\")}\n >\n {#snippet actions()}\n <div class=\"range\" role=\"group\" aria-label={t(\"organization.members.who\")}>\n {#each LENSES as [key, label] (key)}\n <button type=\"button\" aria-pressed={lens === key} onclick={() => (lens = key)}>{label}</button>\n {/each}\n </div>\n {#if !organization.archivedAt}\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={openAdding}>{t(\"organization.members.add\")}</button>\n {/if}\n {/snippet}\n\n {#if adding}\n <div class=\"grid gap-3 sm:grid-cols-[minmax(0,1fr)_10rem_auto] sm:items-end\">\n <Field label={t(\"organization.members.email\")} type=\"email\" bind:value={adding.email} placeholder=\"person@example.com\" />\n <Select label={t(\"organization.members.role\")} value={adding.role} options={roleOptions} onchange={(chosen) => (adding.role = chosen)} />\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !adding.email.trim()} onclick={add}>\n {t(\"organization.members.invite\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => (adding = null)}>{t(\"organization.members.cancel\")}</button>\n </div>\n </div>\n <p class=\"hint\">\n {t(\"organization.members.hint\")}\n </p>\n {/if}\n\n <Table\n columns={[\n t(\"organization.members.person\"),\n { label: t(\"organization.members.role\"), hide: true },\n { label: \"\", right: true, hide: true },\n ]}\n count={shown.length}\n empty={t(`organization.members.empty.${lens}`)}\n >\n {#snippet rows()}\n {#each shown as member (member.actor.uuid)}\n <tr>\n <td class=\"w-full min-w-0\">\n <div class=\"flex min-w-0 flex-col gap-0.5\">\n <span class=\"flex flex-wrap items-center gap-2\">\n <Link to={`/actors/${member.actor.uuid}`} class=\"link link-hover font-medium break-all\">\n {named(member)}\n </Link>\n {#if member.expired}<span class=\"badge badge-sm badge-error badge-soft\">{t(\"organization.members.expired\")}</span>\n {:else if member.pending}<span class=\"badge badge-sm badge-warning badge-soft\">{t(\"organization.members.invited\")}</span>{/if}\n {#if lastOwner(member)}<span class=\"badge badge-sm badge-ghost\">{t(\"organization.members.last_owner\")}</span>{/if}\n </span>\n <span class=\"hint\">{status(member)}</span>\n <div class=\"mt-2 flex flex-wrap items-center gap-2 md:hidden\">\n <div class=\"min-w-28 flex-1 basis-28\">{@render roleOf(member)}</div>\n <div class=\"-me-3 flex shrink-0\">{@render removeOf(member)}</div>\n </div>\n </div>\n </td>\n <td class=\"hidden w-44 min-w-44 md:table-cell\">\n {@render roleOf(member)}\n </td>\n <td class=\"hidden text-right whitespace-nowrap md:table-cell\">\n {@render removeOf(member)}\n </td>\n </tr>\n {/each}\n {/snippet}\n </Table>\n </Section>\n {/if}\n </div>\n {/if}\n</Page>\n\n{#snippet roleOf(member)}\n <Select\n value={member.role}\n options={roleOptions}\n name={t(\"organization.members.role_of\", { name: named(member) })}\n disabled={busy || lastOwner(member) || Boolean(organization.archivedAt)}\n onchange={(chosen) => setRole(member, chosen)}\n />\n{/snippet}\n\n{#snippet removeOf(member)}\n {#if member.pending}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n disabled={busy || Boolean(organization.archivedAt)}\n onclick={() => resend(member)}\n >\n {t(\"organization.members.send_again\")}\n </button>\n {/if}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm btn-error\"\n disabled={busy || lastOwner(member)}\n title={lastOwner(member) ? t(\"organization.members.owner_first\") : null}\n onclick={() => remove(member)}\n >\n {member.pending ? t(\"organization.members.withdraw\") : t(\"organization.members.remove\")}\n </button>\n{/snippet}\n","<script>\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { since } from \"./lib/format.js\";\n import Notices from \"./ui/Notices.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Select from \"./ui/Select.svelte\";\n\n let { api } = $props();\n\n const QUERY = `\n query Domains {\n domainClaims { domain recordName recordValue verifiedAt missingSince provider { key name } }\n providers { key name }\n tenant { customHost origins }\n }\n `;\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let busy = $state(false);\n let domain = $state(\"\");\n let host = $state(\"\");\n\n async function load() {\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n if (answer) {\n data = answer;\n host = answer.tenant.customHost ?? \"\";\n }\n }\n\n load();\n\n const providerOptions = $derived([\n [\"\", t(\"domains.here\")],\n ...(data?.providers ?? []).map((provider) => [provider.key, t(\"domains.to\", { name: provider.name })]),\n ]);\n\n const proven = $derived((data?.domainClaims ?? []).filter((held) => held.verifiedAt));\n\n async function run(query, variables, notice) {\n busy = true;\n\n const answer = await feedback.attempt(() => api.query(query, variables), notice);\n\n busy = false;\n\n if (answer) await load();\n\n return answer;\n }\n\n async function claim() {\n const value = domain.trim();\n\n if (!value) return;\n\n const answer = await run(\n `mutation Claim($domain: String!) { claimDomain(domain: $domain) { domainClaim { domain } } }`,\n { domain: value },\n t(\"domains.claimed\", { domain: value }),\n );\n\n if (answer) domain = \"\";\n }\n\n async function check(held) {\n busy = true;\n\n const answer = await feedback.attempt(() =>\n api.query(`mutation Check($domain: String!) { checkDomain(domain: $domain) { found } }`, { domain: held.domain }),\n );\n\n busy = false;\n\n if (!answer) return;\n\n if (answer.checkDomain.found) {\n feedback.say(t(\"domains.proven\", { domain: held.domain }));\n } else {\n feedback.blame(t(\"domains.unanswered\", { name: held.recordName }));\n }\n\n await load();\n }\n\n function route(held, provider) {\n run(\n `mutation Route($domain: String!, $provider: ID) {\n updateDomainClaim(domain: $domain, provider: $provider) { domainClaim { domain } }\n }`,\n { domain: held.domain, provider: provider || null },\n provider ? t(\"domains.routed_away\", { domain: held.domain }) : t(\"domains.routed_here\", { domain: held.domain }),\n );\n }\n\n function release(held) {\n if (!confirm(t(\"domains.release_confirm\", { domain: held.domain }))) return;\n\n run(\n `mutation Release($domain: String!) { releaseDomain(domain: $domain) { domain } }`,\n { domain: held.domain },\n t(\"domains.released\", { domain: held.domain }),\n );\n }\n\n function serve(value) {\n if (!value && !confirm(t(\"domains.stop_confirm\", { host: data.tenant.customHost }))) return;\n\n run(\n `mutation Serve($host: String) { serveDomain(host: $host) { tenant { customHost } } }`,\n { host: value },\n value ? t(\"domains.served\", { host: value }) : t(\"domains.unserved\"),\n );\n }\n</script>\n\n<Section row title={t(\"domains.title\")} help={t(\"domains.help\")}>\n <Notices feedback={feedback.state} />\n\n {#if data}\n {#if data.domainClaims.length}\n <ul class=\"compact-list\">\n {#each data.domainClaims as held (held.domain)}\n <li class=\"flex-wrap\">\n <code class=\"min-w-0 truncate font-mono text-sm\">{held.domain}</code>\n\n {#if held.missingSince}\n <span class=\"badge badge-warning badge-soft badge-sm\">{t(\"domains.missing\", { since: since(held.missingSince) })}</span>\n {:else if !held.verifiedAt}\n <span class=\"badge badge-ghost badge-sm\">{t(\"domains.unproven\")}</span>\n {/if}\n\n <div class=\"ml-auto flex items-center gap-1\">\n {#if held.verifiedAt && !held.missingSince}\n <Select\n name={t(\"domains.send\", { domain: held.domain })}\n value={held.provider?.key ?? \"\"}\n options={providerOptions}\n disabled={busy}\n onchange={(key) => route(held, key)}\n />\n {:else}\n <button type=\"button\" class=\"btn btn-sm\" disabled={busy} onclick={() => check(held)}>{t(\"domains.check\")}</button>\n {/if}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs\"\n aria-label={t(\"domains.release\", { domain: held.domain })}\n disabled={busy}\n onclick={() => release(held)}\n >×</button>\n </div>\n\n {#if !held.verifiedAt || held.missingSince}\n <p class=\"hint w-full\">\n {t(\"domains.record\")}\n <code class=\"font-mono text-xs break-all\">{held.recordName}</code>\n <code class=\"font-mono text-xs break-all\">{held.recordValue}</code>\n </p>\n {/if}\n </li>\n {/each}\n </ul>\n {/if}\n\n <form\n class=\"join\"\n onsubmit={(event) => {\n event.preventDefault();\n claim();\n }}\n >\n <input\n class=\"input input-sm join-item w-full max-w-60 font-mono\"\n aria-label={t(\"domains.new\")}\n placeholder=\"acme.example\"\n autocapitalize=\"none\"\n spellcheck=\"false\"\n bind:value={domain}\n />\n <button type=\"submit\" class=\"btn btn-sm join-item\" disabled={busy || !domain.trim()}>{t(\"domains.add\")}</button>\n </form>\n\n {#if proven.length || data.tenant.customHost}\n <form\n class=\"flex flex-wrap items-center gap-2\"\n onsubmit={(event) => {\n event.preventDefault();\n serve(host.trim());\n }}\n >\n <span class=\"text-sm\">{t(\"domains.serve\")}</span>\n <input\n class=\"input input-sm w-full max-w-60 font-mono\"\n aria-label={t(\"domains.serve\")}\n placeholder=\"login.{proven[0]?.domain ?? 'acme.example'}\"\n autocapitalize=\"none\"\n spellcheck=\"false\"\n bind:value={host}\n />\n <button type=\"submit\" class=\"btn btn-sm\" disabled={busy || !host.trim() || host.trim() === data.tenant.customHost}>\n {t(\"domains.save\")}\n </button>\n {#if data.tenant.customHost}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" disabled={busy} onclick={() => serve(null)}>{t(\"domains.stop\")}</button>\n {/if}\n </form>\n {/if}\n {/if}\n</Section>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import Notices from \"./ui/Notices.svelte\";\n import Section from \"./ui/Section.svelte\";\n\n let { api } = $props();\n\n const feedback = createFeedback();\n\n let groups = $state([]);\n let name = $state(\"\");\n\n const key = $derived(\n name\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\"),\n );\n\n async function load() {\n const answer = await feedback.attempt(() => api.query(`query Groups { groups { key name memberCount } }`));\n\n if (answer) groups = answer.groups;\n }\n\n load();\n\n async function create() {\n if (!key) return;\n\n const label = name.trim();\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Create($key: String!, $name: String!) { createGroup(key: $key, name: $name) { group { key } } }`, {\n key,\n name: label,\n }),\n t(\"groups.added\", { name: label }),\n );\n\n if (!done) return;\n\n name = \"\";\n await load();\n }\n\n async function remove(group) {\n if (!confirm(t(\"groups.delete_confirm\", { name: group.name }))) return;\n\n const done = await feedback.attempt(\n () => api.query(`mutation Delete($key: String!) { deleteGroup(key: $key) { key } }`, { key: group.key }),\n t(\"groups.deleted\", { name: group.name }),\n );\n\n if (done) await load();\n }\n</script>\n\n<Section row title={t(\"groups.title\")} help={t(\"groups.lede\")}>\n <Notices feedback={feedback.state} />\n\n {#if groups.length}\n <ul class=\"compact-list\">\n {#each groups as group (group.key)}\n <li>\n <span class=\"min-w-0 truncate text-sm font-medium\">{group.name}</span>\n <code class=\"hint font-mono\">{group.key}</code>\n <span class=\"hint\">{t(\"groups.people\", { count: group.memberCount })}</span>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs ml-auto\"\n aria-label={t(\"groups.delete\", { name: group.name })}\n onclick={() => remove(group)}\n >×</button>\n </li>\n {/each}\n </ul>\n {/if}\n\n <form\n class=\"join\"\n onsubmit={(event) => {\n event.preventDefault();\n create();\n }}\n >\n <input class=\"input input-sm join-item w-full max-w-60\" aria-label={t(\"groups.new\")} placeholder={t(\"groups.new\")} bind:value={name} />\n <button type=\"submit\" class=\"btn btn-sm join-item\" disabled={!key}>{t(\"groups.add\")}</button>\n </form>\n\n {#if key}\n <p class=\"hint\">{t(\"groups.key\", { key })}</p>\n {/if}\n</Section>\n","<script>\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { day } from \"./lib/format.js\";\n import DomainsSection from \"./DomainsSection.svelte\";\n import GroupsSection from \"./GroupsSection.svelte\";\n import Namespaces from \"./Namespaces.svelte\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Select from \"./ui/Select.svelte\";\n import Facts from \"./ui/Facts.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api, boot } = $props();\n\n const QUERY = `\n query Tenant {\n tenant {\n uuid subdomain name dynamicRegistration dynamicClientScopes createdAt mails accentColor logoUrl keyRotationDays\n eventRetentionDays\n signingKeys { kid algorithm activatedAt retiredAt state }\n }\n viewer { identifier scopes }\n namespaces {\n name resource claimedAt releasable\n client { clientId name }\n }\n scopesSupported\n }\n `;\n\n const RETENTION = [\n [30, t(\"settings.retention.days_30\")],\n [90, t(\"settings.retention.days_90\")],\n [180, t(\"settings.retention.days_180\")],\n [365, t(\"settings.retention.a_year\")],\n [1095, t(\"settings.retention.three_years\")],\n [2555, t(\"settings.retention.seven_years\")],\n ];\n\n const choices = (listed, held) =>\n !held || listed.some(([days]) => days === held) ? listed : [...listed, [held, t(\"settings.after_days\", { days: held })]];\n\n const BADGE = {\n staged: \"badge-warning\",\n active: \"badge-success\",\n retiring: \"badge-info\",\n retired: \"badge-ghost\",\n };\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let name = $state(\"\");\n let loading = $state(true);\n\n async function load() {\n loading = true;\n\n try {\n data = await api.query(QUERY);\n name = data.tenant.name;\n } catch (thrown) {\n feedback.blame(thrown);\n } finally {\n loading = false;\n }\n }\n\n load();\n\n async function update(changes, notice) {\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Update(\n $name: String, $dynamicClientScopes: [String!], $dynamicRegistration: String,\n $eventRetentionDays: Int, $accentColor: String, $keyRotationDays: Int\n ) {\n updateTenant(\n name: $name\n dynamicClientScopes: $dynamicClientScopes\n dynamicRegistration: $dynamicRegistration\n eventRetentionDays: $eventRetentionDays\n accentColor: $accentColor\n keyRotationDays: $keyRotationDays\n ) { tenant { name } }\n }`,\n changes,\n ),\n notice,\n );\n\n if (done) await load();\n }\n\n async function chooseLogo(event) {\n const input = event.currentTarget;\n const file = input.files?.[0];\n\n if (!file) return;\n\n await keys(\n `mutation Logo($logo: Upload!) { uploadTenantLogo(logo: $logo) { tenant { logoUrl } } }`,\n { logo: file },\n t(\"settings.branding.logo_updated\"),\n );\n\n input.value = \"\";\n }\n\n async function keys(query, variables, notice) {\n const done = await feedback.attempt(() => api.query(query, variables), notice);\n\n if (done) await load();\n }\n\n const stage = () =>\n keys(\n `mutation Stage { stageSigningKey { signingKey { kid } } }`,\n {},\n t(\"settings.keys.staged_notice\"),\n );\n\n function activate(kid) {\n if (!confirm(t(\"settings.keys.activate_confirm\"))) return;\n\n return keys(\n `mutation Activate($kid: ID!) { activateSigningKey(kid: $kid) { signingKey { kid } } }`,\n { kid },\n t(\"settings.keys.activated_notice\"),\n );\n }\n\n function discard(kid) {\n if (!confirm(t(\"settings.keys.discard_confirm\"))) return;\n\n return keys(\n `mutation Discard($kid: ID!) { discardSigningKey(kid: $kid) { kid } }`,\n { kid },\n t(\"settings.keys.discarded\"),\n );\n }\n\n function rotate() {\n if (!confirm(t(\"settings.keys.rotate_confirm\"))) return;\n\n return keys(\n `mutation Rotate { rotateSigningKey { signingKey { kid } } }`,\n {},\n t(\"settings.keys.rotated\"),\n );\n }\n</script>\n\n{#if loading && !data}\n <Spinner />\n{:else if !data}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">{feedback.state.failure}</div>\n{:else}\n <Page title={t(\"settings.title\")}>\n <Notices feedback={feedback.state} />\n\n <div class=\"grid gap-4\">\n <Section\n row\n title={t(\"settings.tenant.title\")}\n help={t(\"settings.tenant.help\")}\n >\n <Field label={t(\"settings.tenant.name\")} bind:value={name} onsave={() => update({ name }, t(\"settings.tenant.renamed\"))} />\n\n <Facts\n rows={[\n { term: t(\"settings.tenant.subdomain\"), value: data.tenant.subdomain, mono: true },\n { term: t(\"settings.tenant.issuer\"), value: boot.issuer, mono: true },\n { term: t(\"settings.tenant.resource\"), value: boot.resource, mono: true },\n { term: t(\"settings.tenant.since\"), value: day(data.tenant.createdAt) },\n ]}\n />\n </Section>\n\n <Section\n row\n title={t(\"settings.branding.title\")}\n help={t(\"settings.branding.help\")}\n >\n <div class=\"flex flex-wrap items-center gap-3\">\n {#if data.tenant.logoUrl}\n <img src={data.tenant.logoUrl} alt=\"\" width=\"48\" height=\"48\" class=\"rounded-lg\" />\n {/if}\n\n <label class=\"btn btn-sm\">\n {data.tenant.logoUrl ? t(\"settings.branding.change_logo\") : t(\"settings.branding.upload_logo\")}\n <input type=\"file\" class=\"hidden\" accept=\"image/png,image/jpeg,image/webp,image/gif\" onchange={chooseLogo} />\n </label>\n\n {#if data.tenant.logoUrl}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() => keys(`mutation { removeTenantLogo { tenant { logoUrl } } }`, {}, t(\"settings.branding.logo_removed\"))}\n >\n {t(\"settings.branding.remove\")}\n </button>\n {/if}\n </div>\n\n <div class=\"flex flex-wrap items-center gap-3\">\n <label class=\"flex items-center gap-2 text-sm\">\n <input\n type=\"color\"\n value={data.tenant.accentColor ?? \"#b3380f\"}\n onchange={(event) => update({ accentColor: event.currentTarget.value }, t(\"settings.branding.color_updated\"))}\n />\n {t(\"settings.branding.accent\")}\n </label>\n\n {#if data.tenant.accentColor}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => update({ accentColor: \"\" }, t(\"settings.branding.color_reset\"))}>\n {t(\"settings.branding.own\")}\n </button>\n {/if}\n </div>\n </Section>\n\n <Section\n row\n title={t(\"settings.retention.title\")}\n help={t(\"settings.retention.help\")}\n >\n <Select\n value={data.tenant.eventRetentionDays}\n options={choices(RETENTION, data.tenant.eventRetentionDays)}\n onchange={(days) => update({ eventRetentionDays: Number(days) }, t(\"settings.retention.updated\"))}\n />\n </Section>\n\n <Section\n row\n title={t(\"settings.registration.title\")}\n help={t(\"settings.registration.help\")}\n >\n <Select\n value={data.tenant.dynamicRegistration}\n options={[\n [\"off\", t(\"settings.registration.off\")],\n [\"anything\", t(\"settings.registration.on\")],\n [\"bounded\", t(\"settings.registration.bounded\")],\n ]}\n onchange={(dynamicRegistration) =>\n update({ dynamicRegistration }, t(\"settings.registration.updated\"))}\n />\n\n {#if data.tenant.dynamicRegistration === \"bounded\"}\n <ScopesEditor\n value={data.tenant.dynamicClientScopes ?? []}\n available={data.scopesSupported}\n onchange={(dynamicClientScopes) => update({ dynamicClientScopes }, t(\"settings.registration.ceiling_updated\"))}\n />\n {/if}\n </Section>\n\n {#if data.namespaces.length}\n <Namespaces {api} rows={data.namespaces} onreleased={load} showClient row />\n {/if}\n\n <Section row title={t(\"settings.keys.title\")} help={t(\"settings.keys.help\")}>\n <ul class=\"compact-list\">\n {#each data.tenant.signingKeys as key (key.kid)}\n <li class=\"flex-wrap\">\n <code class=\"font-mono text-sm\">{key.kid.slice(0, 8)}</code>\n <span class=\"badge badge-sm {BADGE[key.state]}\">{BADGE[key.state] ? t(`settings.keys.states.${key.state}`) : key.state}</span>\n <span class=\"hint text-xs\">\n {key.algorithm} ·\n {#if key.state === \"retiring\"}\n {t(\"settings.keys.until\", { day: day(key.retiredAt) })}\n {:else}\n {day(key.activatedAt, t(\"settings.keys.not_yet\"))}\n {/if}\n </span>\n\n {#if key.state === \"staged\"}\n <div class=\"ml-auto flex gap-1\">\n <button type=\"button\" class=\"btn btn-xs\" onclick={() => activate(key.kid)}>{t(\"settings.keys.activate\")}</button>\n <button type=\"button\" class=\"btn btn-xs btn-ghost\" onclick={() => discard(key.kid)}>{t(\"settings.keys.discard\")}</button>\n </div>\n {/if}\n </li>\n {/each}\n </ul>\n\n <div class=\"flex flex-wrap items-center gap-2\">\n <Select\n name={t(\"settings.keys.schedule\")}\n value={String(data.tenant.keyRotationDays ?? 0)}\n options={[0, 30, 90, 180, 365].map((days) => [\n String(days),\n days ? t(\"settings.keys.every\", { count: days }) : t(\"settings.keys.by_hand\"),\n ])}\n onchange={(days) => update({ keyRotationDays: Number(days) }, t(\"settings.keys.scheduled\"))}\n />\n <button type=\"button\" class=\"btn btn-sm\" onclick={stage}>{t(\"settings.keys.stage\")}</button>\n <button type=\"button\" class=\"btn btn-sm btn-ghost\" onclick={rotate}>{t(\"settings.keys.rotate\")}</button>\n </div>\n </Section>\n\n <GroupsSection {api} />\n\n <DomainsSection {api} />\n </div>\n </Page>\n{/if}\n","<script>\n import { t } from \"../lib/copy.js\";\n let { points, label } = $props();\n\n const W = 720;\n const H = 168;\n const FOOT = 22;\n const PLOT = H - FOOT;\n const GAP = 2;\n const CAP = 2;\n\n const peak = $derived(Math.max(1, ...points.map((point) => point.value)));\n const step = $derived(W / Math.max(points.length, 1));\n const width = $derived(Math.max(step - GAP, 1));\n const total = $derived(points.reduce((sum, point) => sum + point.value, 0));\n\n let hovered = $state(null);\n\n function share(index) {\n return ((index + 0.5) / Math.max(points.length, 1)) * 100;\n }\n\n function bar(value, x) {\n const height = value === 0 ? 2 : Math.max((value / peak) * (PLOT - 8), 3);\n const y = PLOT - height;\n const radius = Math.min(CAP, width / 2, height);\n\n return [\n `M ${x} ${PLOT}`,\n `L ${x} ${y + radius}`,\n `Q ${x} ${y} ${x + radius} ${y}`,\n `L ${x + width - radius} ${y}`,\n `Q ${x + width} ${y} ${x + width} ${y + radius}`,\n `L ${x + width} ${PLOT}`,\n \"Z\",\n ].join(\" \");\n }\n\n const ticks = $derived(\n points.length\n ? [0, Math.floor((points.length - 1) / 2), points.length - 1]\n .filter((at, index, all) => all.indexOf(at) === index)\n .map((at) => ({ at, point: points[at] }))\n : [],\n );\n</script>\n\n<figure class=\"chart\">\n <figcaption class=\"chart-head\">\n <span class=\"sr-only\">{label}</span>\n <span class=\"chart-peak\">{t(\"ui.bar_chart.peak\", { peak })}</span>\n </figcaption>\n\n <div class=\"chart-plot tray\">\n <svg\n viewBox=\"0 0 {W} {H}\"\n class=\"chart-svg\"\n role=\"img\"\n aria-label={t(\"ui.bar_chart.summary\", { label, total, days: points.length, peak })}\n >\n <line class=\"chart-base\" x1=\"0\" y1={PLOT} x2={W} y2={PLOT} />\n\n {#each points as point, index (point.key)}\n <path\n class=\"chart-bar\"\n class:chart-bar-idle={point.value === 0}\n class:chart-bar-on={hovered?.index === index}\n d={bar(point.value, index * step)}\n />\n {/each}\n\n {#each points as point, index (point.key)}\n <rect\n class=\"chart-hit\"\n x={index * step}\n y=\"0\"\n width={step}\n height={PLOT}\n onmouseenter={() => (hovered = { ...point, index })}\n onmouseleave={() => (hovered = null)}\n onfocus={() => (hovered = { ...point, index })}\n onblur={() => (hovered = null)}\n tabindex=\"-1\"\n role=\"presentation\"\n />\n {/each}\n </svg>\n\n {#if hovered}\n <div\n class=\"chart-tip\"\n style=\"--at: {share(hovered.index)}%\"\n aria-hidden=\"true\"\n >\n <strong>{hovered.value}</strong>\n {t(\"ui.bar_chart.unit\", { count: hovered.value })}\n <span>{hovered.label}</span>\n </div>\n {/if}\n </div>\n\n <div class=\"chart-axis\">\n {#each ticks as tick (tick.at)}\n <span style=\"--at: {share(tick.at)}%\">{tick.point.label}</span>\n {/each}\n </div>\n\n <table class=\"sr-only\">\n <caption>{label}</caption>\n <thead><tr><th>{t(\"ui.bar_chart.day\")}</th><th>{t(\"ui.bar_chart.units\")}</th></tr></thead>\n <tbody>\n {#each points as point (point.key)}\n <tr><td>{point.label}</td><td>{point.value}</td></tr>\n {/each}\n </tbody>\n </table>\n</figure>\n","<script>\n import { t } from \"../lib/copy.js\";\n import Spinner from \"./Spinner.svelte\";\n\n let { load, children } = $props();\n\n let state = $state({ loading: true, failure: null, data: null });\n\n async function run() {\n state.loading = true;\n state.failure = null;\n\n try {\n state.data = await load();\n } catch (thrown) {\n state.failure = thrown.message;\n } finally {\n state.loading = false;\n }\n }\n\n run();\n</script>\n\n{#if state.loading}\n <Spinner />\n{:else if state.failure}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">\n <span>{state.failure}</span>\n <button type=\"button\" class=\"btn btn-sm\" onclick={run}>{t(\"ui.retry\")}</button>\n </div>\n{:else}\n {@render children(state.data, run)}\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { since } from \"./lib/format.js\";\n import Events from \"./Events.svelte\";\n import OrganizationCell from \"./OrganizationCell.svelte\";\n import OrganizationHeadcount from \"./OrganizationHeadcount.svelte\";\n import BarChart from \"./ui/BarChart.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Loader from \"./ui/Loader.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n import Tally from \"./ui/Tally.svelte\";\n\n let { api, boot } = $props();\n\n const ORGANIZATIONS_SHOWN = 5;\n\n const QUERY = `\n query Overview($since: ISO8601DateTime!) {\n tenant { name mails }\n tally { actors clients devices organizations }\n waiting: actorCount(pendingApproval: true)\n help: actorCount(recoveryRequested: true)\n worrying: eventCount(grave: true, since: $since)\n gravest: events(grave: true, since: $since, limit: 1) { id label createdAt }\n latest: events(limit: 40) {\n id action label createdAt ipAddress details\n actor { uuid identifier }\n by { uuid identifier }\n client { clientId name }\n device { id label }\n }\n organizations(limit: ${ORGANIZATIONS_SHOWN}) { key name memberCount ownerCount pendingCount }\n }\n `;\n\n const ACTIVITY = `\n query Activity($days: Int) {\n activity(days: $days) { date signIns }\n }\n `;\n\n const SPANS = [7, 30, 90];\n const DAY = 24 * 60 * 60 * 1000;\n const MARK = new Intl.DateTimeFormat(undefined, { day: \"numeric\", month: \"short\" });\n const SKIPPED = \"masks:manage:skipped\";\n\n let data = $state(null);\n let failure = $state(null);\n let days = $state(30);\n let skipped = $state([]);\n\n try {\n skipped = JSON.parse(localStorage.getItem(SKIPPED) ?? \"[]\");\n } catch {}\n\n function skip(key) {\n skipped = [...skipped, key];\n\n try {\n localStorage.setItem(SKIPPED, JSON.stringify(skipped));\n } catch {}\n }\n\n const counts = $derived(\n data\n ? [\n { to: \"/actors\", label: t(\"settings.counts.actors\"), value: data.tally.actors },\n { to: \"/clients\", label: t(\"settings.counts.clients\"), value: data.tally.clients },\n { to: \"/organizations\", label: t(\"settings.counts.organizations\"), value: data.tally.organizations },\n { to: \"/actors#devices\", label: t(\"settings.counts.devices\"), value: data.tally.devices },\n ]\n : [],\n );\n\n const needs = $derived(\n data\n ? [\n data.waiting && {\n key: \"waiting\",\n tone: \"warn\",\n title: t(\"settings.needs.waiting\", { count: data.waiting }),\n to: \"/actors?lens=waiting\",\n },\n data.help && {\n key: \"help\",\n tone: \"warn\",\n title: t(\"settings.needs.help\", { count: data.help }),\n to: \"/actors?lens=help\",\n },\n data.worrying && {\n key: \"worrying\",\n tone: \"bad\",\n title: t(\"settings.needs.worrying\", { count: data.worrying }),\n detail: t(\"settings.needs.latest\", { label: data.gravest[0].label, when: since(data.gravest[0].createdAt) }),\n to: \"/activity?grave=1\",\n },\n ].filter(Boolean)\n : [],\n );\n\n const starting = $derived(\n data\n ? [\n !data.tenant.mails && {\n key: \"mail\",\n title: t(\"settings.starting.mail.title\"),\n detail: t(\"settings.starting.mail.detail\"),\n to: \"/messages\",\n action: t(\"settings.starting.mail.action\"),\n },\n data.tally.clients === 0 && {\n key: \"client\",\n title: t(\"settings.starting.client.title\"),\n detail: t(\"settings.starting.client.detail\"),\n to: \"/clients\",\n action: t(\"settings.starting.client.action\"),\n },\n data.tally.actors <= 1 && {\n key: \"invite\",\n title: t(\"settings.starting.invite.title\"),\n detail: t(\"settings.starting.invite.detail\"),\n to: \"/actors\",\n action: t(\"settings.starting.invite.action\"),\n },\n ].filter((step) => step && !skipped.includes(step.key))\n : [],\n );\n\n const plotted = (rows) =>\n rows.map((row) => ({\n key: row.date,\n value: row.signIns,\n label: MARK.format(new Date(`${row.date}T00:00:00`)),\n }));\n\n async function load() {\n try {\n data = await api.query(QUERY, { since: new Date(Date.now() - DAY).toISOString() });\n } catch (thrown) {\n failure = thrown.message;\n }\n }\n\n load();\n</script>\n\n{#if !data && !failure}\n <Spinner />\n{:else if !data}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">{failure}</div>\n{:else}\n <Page title={data.tenant.name} id={boot.issuer} hero>\n {#if needs.length || starting.length}\n <div class=\"flex flex-col gap-2\">\n {#each needs as need (need.key)}\n <div class=\"callout callout-{need.tone}\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{need.title}</strong>\n {#if need.detail}<span class=\"hint\">{need.detail}</span>{/if}\n </div>\n <div class=\"callout-actions\">\n <Link to={need.to} class=\"btn btn-sm\">{t(\"settings.needs.review\")}</Link>\n </div>\n </div>\n {/each}\n\n {#each starting as step (step.key)}\n <div class=\"callout callout-quiet\">\n <div class=\"callout-words\">\n <strong>{step.title}</strong>\n <span class=\"hint\">{step.detail}</span>\n </div>\n <div class=\"callout-actions\">\n <Link to={step.to} class=\"btn btn-sm\">{step.action}</Link>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => skip(step.key)}>\n {t(\"settings.starting.hide\")}\n </button>\n </div>\n </div>\n {/each}\n </div>\n {/if}\n\n <Tally {counts} />\n\n <div class=\"dash\">\n <div class=\"dash-main\">\n <Section title={t(\"settings.sign_ins.title\")}>\n {#snippet actions()}\n <div class=\"range\" role=\"group\" aria-label={t(\"settings.sign_ins.range\")}>\n {#each SPANS as span (span)}\n <button type=\"button\" aria-pressed={days === span} onclick={() => (days = span)}>\n {t(\"settings.sign_ins.span\", { days: span })}\n </button>\n {/each}\n </div>\n {/snippet}\n\n {#key days}\n <Loader load={() => api.query(ACTIVITY, { days })}>\n {#snippet children(activity)}\n <BarChart points={plotted(activity.activity)} label={t(\"settings.sign_ins.chart\")} />\n {/snippet}\n </Loader>\n {/key}\n </Section>\n </div>\n\n <div class=\"dash-side\">\n <Section title={t(\"settings.organizations.title\")}>\n {#snippet actions()}\n <Link to=\"/organizations\" class=\"btn btn-ghost btn-sm\">\n {data.tally.organizations > ORGANIZATIONS_SHOWN\n ? t(\"settings.organizations.all_count\", { count: data.tally.organizations })\n : t(\"settings.organizations.all\")}\n </Link>\n {/snippet}\n\n {#if data.organizations.length}\n <Table columns={[t(\"settings.organizations.organization\"), { label: t(\"settings.organizations.members\"), right: true }]} count={data.organizations.length}>\n {#snippet rows()}\n {#each data.organizations as organization (organization.key)}\n <Row to={`/organizations/${organization.key}`}>\n <td><OrganizationCell {organization} /></td>\n <td class=\"text-right text-sm whitespace-nowrap\">\n <OrganizationHeadcount {organization} class=\"flex flex-col items-end\" />\n </td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n {:else}\n <p class=\"hint\">{t(\"settings.organizations.empty\")}</p>\n {/if}\n </Section>\n </div>\n </div>\n\n <Section title={t(\"settings.recent.title\")}>\n {#snippet actions()}\n <Link to=\"/activity\" class=\"btn btn-ghost btn-sm\">{t(\"settings.recent.all\")}</Link>\n {/snippet}\n\n <Events events={data.latest} empty={t(\"settings.recent.empty\")} limit={8} collapse />\n </Section>\n </Page>\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { part } = $props();\n</script>\n\n<nav class=\"settings-tabs\" aria-label={t(\"activity.title\")}>\n <Link to=\"/activity\" class=\"settings-tab {part === 'log' ? 'settings-tab-on' : ''}\">{t(\"activity.parts.log\")}</Link>\n <Link to=\"/activity/streams\" class=\"settings-tab {part === 'streams' ? 'settings-tab-on' : ''}\">{t(\"activity.parts.streams\")}</Link>\n</nav>\n","<script>\n import ActivityParts from \"./ActivityParts.svelte\";\n import Tip from \"./ui/Tip.svelte\";\n import { t } from \"./lib/copy.js\";\n import { createPages } from \"./lib/pages.svelte.js\";\n import Pager from \"./ui/Pager.svelte\";\n import { untrack } from \"svelte\";\n import Events from \"./Events.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Section from \"./ui/Section.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api } = $props();\n\n const pages = createPages();\n\n const FIELDS = `\n id action label createdAt ipAddress userAgent details\n actor { uuid identifier }\n by { uuid identifier }\n client { clientId name }\n device { id label }\n `;\n\n const QUERY = `\n query Activity(\n $action: String, $grave: Boolean, $afterId: ID, $limit: Int,\n $actor: ID, $client: ID\n ) {\n events(\n action: $action, grave: $grave, afterId: $afterId, limit: $limit,\n actor: $actor, client: $client\n ) { ${FIELDS} }\n eventCount(action: $action, grave: $grave, actor: $actor, client: $client)\n eventActions { action label }\n }\n `;\n\n const ABOUT_ACTOR = `query About($uuid: ID!) { actor(uuid: $uuid) { uuid identifier } }`;\n const ABOUT_CLIENT = `query About($clientId: ID!) { client(clientId: $clientId) { clientId name } }`;\n\n const feedback = createFeedback();\n const router = useRouter();\n\n let events = $state([]);\n let actions = $state([]);\n let exporting = $state(false);\n\n const today = () => new Date().toISOString().slice(0, 10);\n const daysAgo = (days) => new Date(Date.now() - days * 86400000).toISOString().slice(0, 10);\n\n let range = $state({ from: daysAgo(30), to: today() });\n let action = $state(\"\");\n let grave = $state(router.query.get(\"grave\") === \"1\");\n let loading = $state(true);\n let about = $state(null);\n\n const actorId = $derived(router.query.get(\"actor\"));\n const clientId = $derived(router.query.get(\"client\"));\n const narrowed = $derived(Boolean(actorId || clientId));\n\n async function load() {\n loading = true;\n\n const data = await feedback.attempt(() =>\n api.query(QUERY, {\n action: action || null,\n grave,\n afterId: pages.cursor,\n limit: pages.size,\n actor: actorId,\n client: clientId,\n }),\n );\n\n loading = false;\n\n if (!data) return;\n\n actions = data.eventActions;\n events = data.events;\n pages.counted(data.eventCount);\n }\n\n function turn(direction) {\n if (direction === \"forward\") pages.forward(events.at(-1)?.id);\n else pages.back();\n\n load();\n }\n\n async function describe() {\n about = null;\n\n if (actorId) {\n const data = await api.query(ABOUT_ACTOR, { uuid: actorId }).catch(() => null);\n\n if (data?.actor) {\n about = { label: data.actor.identifier, to: `/actors/${data.actor.uuid}`, noun: t(\"activity.nouns.actor\") };\n }\n\n return;\n }\n\n if (!clientId) return;\n\n const data = await api.query(ABOUT_CLIENT, { clientId }).catch(() => null);\n\n if (data?.client) {\n about = { label: data.client.name, to: `/clients/${data.client.clientId}`, noun: t(\"activity.nouns.client\") };\n }\n }\n\n $effect(() => {\n actorId;\n clientId;\n\n untrack(() => {\n pages.reset();\n load();\n describe();\n });\n });\n\n function filter(chosen) {\n action = chosen;\n pages.reset();\n load();\n }\n\n function only(worrying) {\n grave = worrying;\n if (worrying) action = \"\";\n pages.reset();\n load();\n }\n\n async function download() {\n exporting = true;\n\n const answer = await feedback.attempt(() =>\n api.query(\n `mutation Export($from: ISO8601DateTime!, $to: ISO8601DateTime!, $action: String, $actor: ID) {\n exportEvents(from: $from, to: $to, action: $action, actor: $actor) { url count }\n }`,\n {\n from: new Date(`${range.from}T00:00:00`).toISOString(),\n to: new Date(new Date(`${range.to}T00:00:00`).getTime() + 86400000).toISOString(),\n action: action || null,\n actor: actorId || null,\n },\n ),\n );\n\n exporting = false;\n\n if (!answer) return;\n\n feedback.say(t(\"activity.downloading\", { count: answer.exportEvents.count }));\n location.assign(answer.exportEvents.url);\n }\n</script>\n\n<Page title={t(\"activity.title\")}>\n <ActivityParts part=\"log\" />\n\n <Notices feedback={feedback.state} />\n\n {#if narrowed}\n <div class=\"alert alert-info alert-soft flex-wrap items-center gap-3 text-sm\" role=\"status\">\n {#if about}\n <span>\n {t(\"activity.involves\", { noun: about.noun })}\n <Link to={about.to} class=\"link font-medium\">{about.label}</Link>{t(\"activity.involves_end\")}\n </span>\n {:else}\n <span>{t(actorId ? \"activity.gone.actor\" : \"activity.gone.client\")}</span>\n {/if}\n\n <Link to=\"/activity\" class=\"btn btn-sm\">{t(\"activity.everything\")}</Link>\n </div>\n {/if}\n\n <Section>\n <div class=\"flex flex-wrap items-end gap-4\">\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"legend\">{t(\"activity.show\")}</span>\n <select\n class=\"select select-sm w-full max-w-xs\"\n value={action}\n disabled={grave}\n onchange={(event) => filter(event.currentTarget.value)}\n >\n <option value=\"\">{t(\"activity.all\")}</option>\n {#each actions as one (one.action)}\n <option value={one.action}>{one.label}</option>\n {/each}\n </select>\n </label>\n\n <label class=\"flex items-center gap-2 pb-1 text-sm\">\n <input\n type=\"checkbox\"\n class=\"toggle toggle-sm\"\n checked={grave}\n onchange={(event) => only(event.currentTarget.checked)}\n />\n {t(\"activity.grave\")}\n </label>\n\n <div class=\"flex flex-col gap-1.5 md:ml-auto\">\n <span class=\"legend flex items-center gap-2\">\n {t(\"activity.export.title\")}\n <Tip text={t(\"activity.export.lede\")} label={t(\"activity.export.title\")} />\n </span>\n <div class=\"flex flex-wrap items-center gap-2\">\n <input class=\"input input-sm w-auto\" type=\"date\" aria-label={t(\"activity.export.from\")} bind:value={range.from} max={range.to} />\n <span class=\"hint\">–</span>\n <input class=\"input input-sm w-auto\" type=\"date\" aria-label={t(\"activity.export.through\")} bind:value={range.to} min={range.from} max={today()} />\n <button type=\"button\" class=\"btn btn-sm\" disabled={exporting || !range.from || !range.to} onclick={download}>\n {t(\"activity.export.download\")}\n </button>\n </div>\n </div>\n </div>\n </Section>\n\n {#if loading && events.length === 0}\n <Spinner />\n {:else}\n <Section>\n <Events\n {events}\n limit={Infinity}\n empty={grave ? t(\"activity.empty.grave\") : t(\"activity.empty.plain\")}\n />\n\n <Pager {pages} shown={events.length} busy={loading} onpage={turn} />\n </Section>\n {/if}\n</Page>\n","import { t } from \"./copy.js\";\n\nexport const protocolName = (protocol) => t(`providers.protocols.${protocol}`);\n\nexport const secretMissing = (provider) =>\n ![\"saml\", \"mcp\"].includes(provider.protocol) &&\n !(provider.tokenAuthMethod === \"signed_secret\"\n ? provider.privateKeyHeld\n : provider.secretHeld);\n\nexport const providerMarks = (provider) =>\n [\n provider.role === \"delegate\" &&\n provider.protocol !== \"mcp\" && [\n \"owns\",\n t(\"providers.marks.owns\"),\n \"primary\",\n ],\n provider.trustsEmail && [\"mail\", t(\"providers.marks.trusts_email\"), \"good\"],\n provider.receivesSignals && [\n \"signals\",\n t(\"providers.marks.signals\"),\n \"info\",\n ],\n provider.delegates && [\"delegates\", t(\"providers.marks.delegates\"), \"info\"],\n secretMissing(provider) && [\n \"unconfirmed\",\n t(\"providers.marks.no_secret\"),\n \"warn\",\n ],\n ].filter(Boolean);\n","<script>\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { day } from \"./lib/format.js\";\n import { protocolName, providerMarks } from \"./lib/providers.js\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Link from \"./ui/Link.svelte\";\n import Marks from \"./ui/Marks.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n\n let { api } = $props();\n\n const router = useRouter();\n\n const FIELDS = `\n key name protocol role trustsEmail receivesSignals delegates tokenAuthMethod secretHeld privateKeyHeld\n connections signedIn emailDomains archivedAt createdAt\n organization { key name }\n `;\n\n const QUERY = `\n query Providers {\n active: providers { ${FIELDS} }\n archived: providers(archived: true) { ${FIELDS} }\n }\n `;\n\n const COLUMNS = [\n t(\"providers.columns.provider\"),\n { label: t(\"providers.columns.kind\"), hide: true },\n { label: t(\"providers.columns.connections\"), hide: true, right: true },\n ];\n\n const feedback = createFeedback();\n\n let active = $state([]);\n let archived = $state([]);\n let loading = $state(true);\n\n async function load() {\n const data = await feedback.attempt(() => api.query(QUERY));\n\n loading = false;\n\n if (!data) return;\n\n active = data.active;\n archived = data.archived;\n }\n\n load();\n\n async function restore(provider) {\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Restore($key: ID!) { restoreProvider(key: $key) { provider { key } } }`, {\n key: provider.key,\n }),\n t(\"providers.notices.restored\", { name: provider.name }),\n );\n\n if (done) await load();\n }\n</script>\n\n<Page title={t(\"providers.title\")} lede={t(\"providers.lede\")}>\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={() => router.go(\"/providers/new\")}>\n {t(\"providers.add\")}\n </button>\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if loading}\n <Spinner />\n {:else}\n <Table columns={COLUMNS} count={active.length} empty={t(\"providers.empty\")}>\n {#snippet rows()}\n {#each active as provider (provider.key)}\n <Row to={`/providers/${provider.key}`}>\n <td class=\"w-full max-w-0 md:w-auto md:max-w-none\">\n <div class=\"flex min-w-0 items-center gap-2\">\n <Link to={`/providers/${provider.key}`} class=\"link link-hover truncate font-medium\">{provider.name}</Link>\n <Marks marks={providerMarks(provider)} />\n </div>\n <div class=\"hint truncate text-xs\">\n <span class=\"font-mono\">{provider.key}</span>\n {#if provider.organization}· {provider.organization.name}{/if}\n <span class=\"md:hidden\">· {protocolName(provider.protocol)}</span>\n </div>\n </td>\n <td class=\"hidden text-sm whitespace-nowrap md:table-cell\">\n {protocolName(provider.protocol)}\n <div class=\"hint text-xs\">\n {provider.protocol === \"mcp\"\n ? t(\"providers.roles.never\")\n : provider.role === \"delegate\"\n ? t(\"providers.roles.owns\")\n : t(\"providers.roles.existing\")}\n </div>\n </td>\n <td class=\"hidden text-right text-sm whitespace-nowrap md:table-cell\">\n {provider.connections}\n {#if provider.signedIn}\n <div class=\"hint text-xs\">{t(\"providers.facts.signed_in\", { count: provider.signedIn })}</div>\n {/if}\n </td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n\n {#if archived.length}\n <Section title={t(\"providers.archived\")}>\n <ul class=\"slats\">\n {#each archived as provider (provider.key)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <span class=\"flex flex-wrap items-baseline gap-2\">\n <Link to={`/providers/${provider.key}`} class=\"link link-hover text-sm font-medium\">{provider.name}</Link>\n <span class=\"hint font-mono text-xs\">{provider.key}</span>\n </span>\n <span class=\"flex items-baseline gap-3 text-xs\">\n <span class=\"hint\">{t(\"providers.archived_on\", { day: day(provider.archivedAt) })}</span>\n <button type=\"button\" class=\"link\" onclick={() => restore(provider)}>{t(\"providers.restore\")}</button>\n </span>\n </div>\n </li>\n {/each}\n </ul>\n </Section>\n {/if}\n {/if}\n</Page>\n","<script>\n import { untrack } from \"svelte\";\n import Connections from \"./Connections.svelte\";\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day } from \"./lib/format.js\";\n import { protocolName, providerMarks, secretMissing } from \"./lib/providers.js\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Marks from \"./ui/Marks.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Parts from \"./ui/Parts.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api, providerKey, part = null } = $props();\n\n const router = useRouter();\n\n const MAPPED = [\"email\", \"email_verified\", \"name\", \"given_name\", \"family_name\", \"preferred_username\", \"picture\"].map(\n (claim) => [claim, t(`providers.claims.${claim}`)],\n );\n\n const NAME_ID_FORMATS = [\n [\"\", t(\"providers.name_id_formats.any\")],\n [\"urn:oasis:names:tc:SAML:2.0:nameid-format:persistent\", t(\"providers.name_id_formats.persistent\")],\n [\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\", t(\"providers.name_id_formats.email\")],\n [\"urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified\", t(\"providers.name_id_formats.unspecified\")],\n ];\n\n const ASKED = {\n domain: [t(\"providers.asked.domain\"), \"acme.okta.com\"],\n tenant: [t(\"providers.asked.tenant\"), \"00000000-0000-0000-0000-000000000000\"],\n realm: [t(\"providers.asked.realm\"), \"staff\"],\n };\n\n const FIELDS = `\n key name protocol preset authorizationUrl tokenUrl userinfoUrl emailsUrl clientId\n scopes subjectClaim claims tokenAuthMethod responseMode teamId keyId\n secretHeld privateKeyHeld connections signedIn archivedAt createdAt callbackUrl\n issuer jwksUri role trustsEmail receivesSignals emailDomains signupScopes\n idpEntityId idpSsoUrl idpCertificates metadataUrl metadataFetchedAt nameIdFormat spEntityId\n delegates delegatedScopes delegationParams delegationScope resourceUrl registeredAt delegations\n organization { key name }\n `;\n\n const PRESETS = `providerPresets { key name protocol asks needs defaults guide custom trustsEmail delegates delegatedScopes }`;\n\n const QUERY = `\n query Provider($key: ID!) {\n provider(key: $key) { ${FIELDS} }\n connections(provider: $key) {\n id subject label email emailVerified connectedAt signedInAt delegable\n provider { key name }\n actor { uuid identifier }\n delegations { id releasedAt client { clientId name } }\n }\n ${PRESETS}\n }\n `;\n\n const ARGUMENTS = [\n [\"name\", \"String\"],\n [\"protocol\", \"String\"],\n [\"authorizationUrl\", \"String\"],\n [\"tokenUrl\", \"String\"],\n [\"userinfoUrl\", \"String\"],\n [\"emailsUrl\", \"String\"],\n [\"clientId\", \"String\"],\n [\"clientSecret\", \"String\"],\n [\"scopes\", \"[String!]\"],\n [\"subjectClaim\", \"String\"],\n [\"claims\", \"JSON\"],\n [\"issuer\", \"String\"],\n [\"jwksUri\", \"String\"],\n [\"tokenAuthMethod\", \"String\"],\n [\"responseMode\", \"String\"],\n [\"teamId\", \"String\"],\n [\"keyId\", \"String\"],\n [\"privateKey\", \"String\"],\n [\"idpEntityId\", \"String\"],\n [\"idpSsoUrl\", \"String\"],\n [\"idpCertificates\", \"String\"],\n [\"metadataUrl\", \"String\"],\n [\"nameIdFormat\", \"String\"],\n [\"role\", \"String\"],\n [\"trustsEmail\", \"Boolean\"],\n [\"receivesSignals\", \"Boolean\"],\n [\"emailDomains\", \"[String!]\"],\n [\"signupScopes\", \"[String!]\"],\n [\"delegates\", \"Boolean\"],\n [\"delegatedScopes\", \"[String!]\"],\n [\"delegationParams\", \"JSON\"],\n [\"resourceUrl\", \"String\"],\n ];\n\n const declared = (extra) => [...extra, ...ARGUMENTS].map(([name, type]) => `$${name}: ${type}`).join(\", \");\n const passed = (extra) => [...extra, ...ARGUMENTS].map(([name]) => `${name}: $${name}`).join(\", \");\n\n const CREATE_EXTRA = [\n [\"key\", \"ID!\"],\n [\"preset\", \"ID\"],\n [\"presetValues\", \"JSON\"],\n ];\n\n const CREATE = `\n mutation Create(${declared(CREATE_EXTRA).replace(\"$name: String\", \"$name: String!\")}) {\n createProvider(${passed(CREATE_EXTRA)}) { provider { key } }\n }\n `;\n\n const UPDATE = `\n mutation Update(${declared([[\"key\", \"ID!\"]])}) {\n updateProvider(${passed([[\"key\", \"ID!\"]])}) { provider { key } }\n }\n `;\n\n const DISCOVER = `\n mutation Discover($issuer: String!) {\n discoverProvider(issuer: $issuer) { issuer authorizationUrl tokenUrl userinfoUrl jwksUri }\n }\n `;\n\n const METADATA = `\n mutation Metadata($metadataUrl: String, $metadataXml: String) {\n readSamlMetadata(metadataUrl: $metadataUrl, metadataXml: $metadataXml) { idpEntityId idpSsoUrl idpCertificates }\n }\n `;\n\n const pairs = (held) =>\n Object.entries(held ?? {})\n .map(([name, value]) => `${name}=${value}`)\n .join(\" \");\n\n const blank = (preset) => ({\n key: preset.custom ? \"\" : preset.key,\n name: preset.custom ? \"\" : preset.name,\n preset: preset.custom ? null : preset.key,\n protocol: preset.protocol,\n asked: { ...preset.defaults },\n authorizationUrl: \"\",\n tokenUrl: \"\",\n userinfoUrl: \"\",\n emailsUrl: \"\",\n clientId: \"\",\n clientSecret: \"\",\n scopes: \"\",\n subjectClaim: preset.protocol === \"oidc\" ? \"sub\" : preset.protocol === \"saml\" ? \"name_id\" : \"id\",\n claims: Object.fromEntries(MAPPED.map(([claim]) => [claim, \"\"])),\n issuer: \"\",\n jwksUri: \"\",\n tokenAuthMethod: preset.needs.includes(\"private_key\") ? \"signed_secret\" : \"client_secret_post\",\n responseMode: \"\",\n teamId: \"\",\n keyId: \"\",\n privateKey: \"\",\n idpEntityId: \"\",\n idpSsoUrl: \"\",\n idpCertificates: \"\",\n metadataUrl: \"\",\n metadataXml: \"\",\n nameIdFormat: \"\",\n role: \"credential\",\n trustsEmail: Boolean(preset.trustsEmail),\n receivesSignals: false,\n emailDomains: \"\",\n signupScopes: \"\",\n delegates: Boolean(preset.delegates),\n delegatedScopes: (preset.delegatedScopes ?? []).join(\" \"),\n delegationParams: \"\",\n resourceUrl: \"\",\n });\n\n const drafted = (provider) => ({\n ...blank({ key: provider.key, name: provider.name, protocol: provider.protocol, needs: [], defaults: {}, custom: true }),\n key: provider.key,\n name: provider.name,\n preset: provider.preset,\n authorizationUrl: provider.authorizationUrl ?? \"\",\n tokenUrl: provider.tokenUrl ?? \"\",\n userinfoUrl: provider.userinfoUrl ?? \"\",\n emailsUrl: provider.emailsUrl ?? \"\",\n clientId: provider.clientId ?? \"\",\n scopes: provider.scopes.join(\" \"),\n subjectClaim: provider.subjectClaim,\n claims: { ...Object.fromEntries(MAPPED.map(([claim]) => [claim, \"\"])), ...provider.claims },\n issuer: provider.issuer ?? \"\",\n jwksUri: provider.jwksUri ?? \"\",\n tokenAuthMethod: provider.tokenAuthMethod,\n responseMode: provider.responseMode ?? \"\",\n teamId: provider.teamId ?? \"\",\n keyId: provider.keyId ?? \"\",\n idpEntityId: provider.idpEntityId ?? \"\",\n idpSsoUrl: provider.idpSsoUrl ?? \"\",\n idpCertificates: provider.idpCertificates ?? \"\",\n metadataUrl: provider.metadataUrl ?? \"\",\n nameIdFormat: provider.nameIdFormat ?? \"\",\n role: provider.role,\n trustsEmail: provider.trustsEmail,\n receivesSignals: provider.receivesSignals,\n emailDomains: provider.emailDomains.join(\" \"),\n signupScopes: provider.signupScopes.join(\" \"),\n delegates: provider.delegates,\n delegatedScopes: provider.delegatedScopes.join(\" \"),\n delegationParams: pairs(provider.delegationParams),\n resourceUrl: provider.resourceUrl ?? \"\",\n });\n\n const feedback = createFeedback();\n\n let provider = $state(null);\n let connected = $state([]);\n let presets = $state([]);\n let draft = $state(null);\n let baseline = $state(\"\");\n let loading = $state(true);\n let busy = $state(false);\n\n const fresh = $derived(providerKey === \"new\");\n const chosen = $derived(\n fresh ? (presets.find((preset) => preset.key === part) ?? null) : (presets.find((preset) => preset.key === provider?.preset) ?? null),\n );\n const custom = $derived(fresh ? Boolean(chosen?.custom) : true);\n const saml = $derived(draft?.protocol === \"saml\");\n const oauth2 = $derived(draft?.protocol === \"oauth2\");\n const oidc = $derived(draft?.protocol === \"oidc\");\n const mcp = $derived(draft?.protocol === \"mcp\");\n const signsSecret = $derived(draft?.tokenAuthMethod === \"signed_secret\");\n const origin = typeof window === \"undefined\" ? \"\" : window.location.origin;\n const callbackUrl = $derived(`${origin}/login/provider/${draft?.key?.trim() || \"…\"}/callback`);\n const spEntityId = $derived(`${origin}/login/provider/${draft?.key?.trim() || \"…\"}/metadata`);\n const named = $derived(draft?.name.trim() || t(\"providers.form.the_provider\"));\n const dirty = $derived(Boolean(draft && !fresh && JSON.stringify(draft) !== baseline));\n\n const PARTS = $derived(\n [\n [null, \"\", t(\"providers.parts.setup\")],\n !mcp && [\"sign-in\", \"/sign-in\", t(\"providers.parts.sign_in\")],\n !saml && [\"clients\", \"/clients\", t(\"providers.parts.clients\")],\n [\"accounts\", \"/accounts\", t(\"providers.parts.accounts\", { count: connected.length })],\n ].filter(Boolean),\n );\n\n const known = $derived(presets.filter((preset) => !preset.custom));\n const generic = $derived(presets.filter((preset) => preset.custom));\n\n async function load() {\n loading = true;\n\n const data = await feedback.attempt(() =>\n fresh ? api.query(`query Presets { ${PRESETS} }`) : api.query(QUERY, { key: providerKey }),\n );\n\n loading = false;\n\n if (!data) return;\n\n presets = data.providerPresets;\n\n if (fresh) {\n provider = null;\n connected = [];\n return;\n }\n\n provider = data.provider;\n connected = data.connections;\n draft = provider ? drafted(provider) : null;\n baseline = JSON.stringify(draft);\n }\n\n $effect(() => {\n providerKey;\n untrack(load);\n });\n\n $effect(() => {\n if (!fresh) return;\n\n const preset = chosen;\n\n untrack(() => {\n draft = preset ? blank(preset) : null;\n });\n });\n\n const trimmed = (value) => value?.trim() || null;\n const words = (value) => value.split(/[\\s,]+/).filter(Boolean);\n const params = (value) =>\n Object.fromEntries(\n words(value)\n .map((pair) => pair.split(\"=\"))\n .filter(([name, held]) => name && held !== undefined)\n .map(([name, ...rest]) => [name, rest.join(\"=\")]),\n );\n\n const claims = () =>\n Object.fromEntries(\n Object.entries(draft.claims)\n .map(([claim, path]) => [claim, path?.trim()])\n .filter(([, path]) => path),\n );\n\n const metadataFields = () => ({\n idpEntityId: trimmed(draft.idpEntityId),\n idpSsoUrl: trimmed(draft.idpSsoUrl),\n idpCertificates: trimmed(draft.idpCertificates),\n nameIdFormat: trimmed(draft.nameIdFormat),\n });\n\n function variables() {\n const held = {\n key: draft.key.trim(),\n name: draft.name.trim(),\n role: draft.role,\n trustsEmail: saml ? false : draft.trustsEmail,\n receivesSignals: oidc ? draft.receivesSignals : false,\n emailDomains: words(draft.emailDomains),\n signupScopes: words(draft.signupScopes),\n clientSecret: trimmed(draft.clientSecret),\n privateKey: trimmed(draft.privateKey),\n delegates: saml ? false : mcp || draft.delegates,\n delegatedScopes: saml ? [] : words(draft.delegatedScopes),\n delegationParams: saml ? {} : params(draft.delegationParams),\n };\n\n if (fresh && !custom) {\n return {\n ...held,\n preset: draft.preset,\n presetValues: draft.asked,\n clientId: trimmed(draft.clientId),\n teamId: trimmed(draft.teamId),\n keyId: trimmed(draft.keyId),\n metadataUrl: trimmed(draft.metadataUrl),\n ...(saml ? metadataFields() : {}),\n ...(mcp ? { resourceUrl: trimmed(draft.resourceUrl) } : {}),\n };\n }\n\n return {\n ...held,\n protocol: draft.protocol,\n authorizationUrl: saml ? null : trimmed(draft.authorizationUrl),\n tokenUrl: saml ? null : trimmed(draft.tokenUrl),\n userinfoUrl: saml ? null : trimmed(draft.userinfoUrl),\n emailsUrl: oauth2 ? trimmed(draft.emailsUrl) : null,\n clientId: saml ? null : trimmed(draft.clientId),\n scopes: saml ? [] : words(draft.scopes),\n subjectClaim: draft.subjectClaim.trim(),\n claims: claims(),\n issuer: oidc ? trimmed(draft.issuer) : null,\n jwksUri: oidc ? trimmed(draft.jwksUri) : null,\n tokenAuthMethod: draft.tokenAuthMethod,\n responseMode: trimmed(draft.responseMode),\n teamId: signsSecret ? trimmed(draft.teamId) : null,\n keyId: signsSecret ? trimmed(draft.keyId) : null,\n metadataUrl: saml ? trimmed(draft.metadataUrl) : null,\n nameIdFormat: saml ? trimmed(draft.nameIdFormat) : null,\n resourceUrl: mcp ? trimmed(draft.resourceUrl) : null,\n ...(saml ? metadataFields() : { idpEntityId: null, idpSsoUrl: null, idpCertificates: null }),\n };\n }\n\n async function discover() {\n busy = true;\n\n const data = await feedback.attempt(\n () => api.query(DISCOVER, { issuer: draft.issuer.trim() }),\n t(\"providers.notices.discovered\"),\n );\n\n busy = false;\n\n if (!data) return;\n\n const found = data.discoverProvider;\n\n draft.issuer = found.issuer;\n draft.authorizationUrl = found.authorizationUrl;\n draft.tokenUrl = found.tokenUrl;\n draft.jwksUri = found.jwksUri;\n draft.userinfoUrl = found.userinfoUrl ?? draft.userinfoUrl;\n }\n\n async function readMetadata() {\n busy = true;\n\n const data = await feedback.attempt(\n () => api.query(METADATA, { metadataUrl: trimmed(draft.metadataUrl), metadataXml: trimmed(draft.metadataXml) }),\n t(\"providers.notices.metadata_read\"),\n );\n\n busy = false;\n\n if (!data) return;\n\n Object.assign(draft, data.readSamlMetadata);\n draft.metadataXml = \"\";\n }\n\n async function save() {\n busy = true;\n\n const adding = fresh;\n const key = draft.key.trim();\n const done = await feedback.attempt(\n () => api.query(adding ? CREATE : UPDATE, variables()),\n adding\n ? mcp\n ? t(\"providers.notices.registered\", { name: draft.name })\n : t(\"providers.notices.added\", { name: draft.name })\n : t(\"providers.notices.saved\", { name: draft.name }),\n );\n\n busy = false;\n\n if (!done) return;\n\n if (adding) router.go(`/providers/${key}`);\n else await load();\n }\n\n const discard = () => {\n draft = JSON.parse(baseline);\n };\n\n async function act(mutation, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(\n () => api.query(`mutation Act($key: ID!) { ${mutation}(key: $key) { provider { key } } }`, { key: provider.key }),\n notice,\n );\n\n if (done) await load();\n }\n\n const archive = () =>\n act(\n \"archiveProvider\",\n t(\"providers.notices.archived\", { name: provider.name }),\n t(\"providers.confirm.archive\", { name: provider.name }),\n );\n\n const restore = () => act(\"restoreProvider\", t(\"providers.notices.restored\", { name: provider.name }));\n\n const register = () =>\n act(\n \"registerProvider\",\n t(\"providers.notices.reregistered\", { name: provider.name }),\n t(\"providers.confirm.register\", { name: provider.name }),\n );\n\n const copy = (value) => navigator.clipboard?.writeText(value);\n\n const needsSecret = $derived(\n !saml && !mcp && !signsSecret && (fresh ? (chosen?.needs ?? [\"client_secret\"]).includes(\"client_secret\") : true),\n );\n\n const complete = $derived.by(() => {\n if (!draft?.key.trim() || !draft.name.trim()) return false;\n if (fresh && !custom) return (chosen?.asks ?? []).every((variable) => draft.asked[variable]?.trim());\n if (saml) return draft.idpEntityId.trim() && draft.idpSsoUrl.trim() && draft.idpCertificates.trim();\n if (mcp) return fresh ? draft.resourceUrl.trim() : true;\n\n return draft.clientId.trim() && draft.authorizationUrl.trim() && draft.tokenUrl.trim();\n });\n\n const lede = $derived(\n provider\n ? [\n protocolName(provider.protocol),\n provider.protocol === \"mcp\"\n ? t(\"providers.roles.never\")\n : provider.role === \"delegate\"\n ? t(\"providers.roles.owns\")\n : t(\"providers.roles.existing\"),\n ].join(\" · \")\n : null,\n );\n</script>\n\n{#snippet toggle(checked, onchange, label, hint)}\n <label class=\"flex items-start gap-3 text-sm\">\n <input type=\"checkbox\" class=\"toggle toggle-sm mt-0.5\" {checked} onchange={(event) => onchange(event.currentTarget.checked)} />\n <span class=\"flex flex-col gap-0.5\">\n <span>{label}</span>\n {#if hint}<span class=\"hint\">{hint}</span>{/if}\n </span>\n </label>\n{/snippet}\n\n{#snippet give()}\n <Section row title={t(\"providers.form.give\", { name: named })} lede={chosen?.guide && fresh ? null : t(\"providers.sections.give_lede\")}>\n {#if chosen?.guide && fresh}\n <p class=\"text-sm\">\n {t(\"providers.form.guide_lead\", { name: chosen.name })}\n <a class=\"link\" href={chosen.guide} target=\"_blank\" rel=\"noreferrer noopener\">{t(\"providers.form.guide_link\", { name: chosen.name })}</a>.\n </p>\n {/if}\n\n <ul class=\"slats\">\n {#each saml ? [[t(\"providers.form.acs_url\"), callbackUrl], [t(\"providers.form.sp_entity_id\"), spEntityId]] : [[t(\"providers.form.redirect_uri\"), callbackUrl]] as [label, value] (label)}\n <li class=\"slat\">\n <span class=\"hint text-xs\">{label}</span>\n <span class=\"flex items-center justify-between gap-3\">\n <code class=\"min-w-0 font-mono text-xs break-all\">{value}</code>\n <button type=\"button\" class=\"btn btn-ghost btn-xs shrink-0\" onclick={() => copy(value)}>{t(\"providers.copy\")}</button>\n </span>\n </li>\n {/each}\n </ul>\n </Section>\n{/snippet}\n\n{#snippet setup()}\n {@render give()}\n\n <Section row title={t(\"providers.sections.identity\")} lede={t(\"providers.sections.identity_lede\")}>\n <Field label={t(\"providers.form.name\")} bind:value={draft.name} placeholder=\"Acme\" />\n {#if fresh}\n <Field\n label={t(\"providers.form.key\")}\n bind:value={draft.key}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"acme\"\n />\n {/if}\n\n {#if fresh && !custom}\n {#each chosen.asks as variable (variable)}\n <Field\n label={ASKED[variable]?.[0] ?? variable}\n bind:value={draft.asked[variable]}\n placeholder={ASKED[variable]?.[1] ?? \"\"}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n {/each}\n {/if}\n </Section>\n\n {#if saml}\n <Section row title={t(\"providers.form.identity_provider\")} lede={t(\"providers.form.metadata_hint\")}>\n <Field\n label={t(\"providers.form.metadata_url\")}\n bind:value={draft.metadataUrl}\n onsave={() => (draft.metadataUrl.trim() || draft.metadataXml.trim()) && !busy && readMetadata()}\n save={t(\"providers.form.read\")}\n placeholder=\"https://idp.acme.test/metadata\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n\n {#if provider?.metadataUrl}\n <p class=\"hint\">\n {t(\"providers.facts.metadata_read\", {\n day: provider.metadataFetchedAt ? day(provider.metadataFetchedAt) : t(\"providers.facts.never\"),\n })}\n </p>\n {/if}\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"providers.form.paste_metadata\")}</span>\n <textarea class=\"textarea textarea-sm w-full max-w-sm font-mono text-xs\" rows=\"3\" bind:value={draft.metadataXml}></textarea>\n </label>\n\n <Field label={t(\"providers.form.entity_id\")} bind:value={draft.idpEntityId} />\n <Field label={t(\"providers.form.sign_in_url\")} bind:value={draft.idpSsoUrl} />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"providers.form.certificates\")}</span>\n <textarea class=\"textarea textarea-sm w-full max-w-sm font-mono text-xs\" rows=\"4\" bind:value={draft.idpCertificates}></textarea>\n </label>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"providers.form.name_id_format\")}</span>\n <select class=\"select select-sm w-full\" bind:value={draft.nameIdFormat}>\n {#each NAME_ID_FORMATS as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n </label>\n </Section>\n {/if}\n\n {#if mcp}\n <Section row title={t(\"providers.sections.mcp\")} lede={t(\"providers.form.mcp_hint\")}>\n {#if fresh && custom}\n <Field\n label={t(\"providers.form.mcp_url\")}\n bind:value={draft.resourceUrl}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"https://mcp.acme.test/mcp\"\n />\n {:else}\n <code class=\"font-mono text-xs break-all\">{draft.resourceUrl}</code>\n {#if provider}\n <p class=\"hint\">\n {t(\"providers.facts.registered\", {\n day: provider.registeredAt ? day(provider.registeredAt) : t(\"providers.facts.never\"),\n })}\n </p>\n {/if}\n {/if}\n </Section>\n {/if}\n\n {#if custom && !saml && !mcp}\n <Section row title={t(\"providers.sections.endpoints\")} lede={oidc ? t(\"providers.sections.endpoints_oidc\") : null}>\n {#if oidc}\n <Field\n label={t(\"providers.form.issuer\")}\n bind:value={draft.issuer}\n onsave={() => draft.issuer.trim() && !busy && discover()}\n save={t(\"providers.form.discover\")}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"https://id.acme.test\"\n />\n {/if}\n\n <Field label={t(\"providers.form.authorization_url\")} bind:value={draft.authorizationUrl} />\n <Field label={t(\"providers.form.token_url\")} bind:value={draft.tokenUrl} />\n <Field\n label={t(\"providers.form.userinfo_url\")}\n bind:value={draft.userinfoUrl}\n placeholder={oauth2 ? \"\" : t(\"providers.form.optional\")}\n />\n {#if oauth2}\n <Field label={t(\"providers.form.emails_url\")} bind:value={draft.emailsUrl} placeholder={t(\"providers.form.optional\")} />\n {:else}\n <Field label={t(\"providers.form.jwks_uri\")} bind:value={draft.jwksUri} placeholder={t(\"providers.form.discovered_if_empty\")} />\n {/if}\n </Section>\n {/if}\n\n {#if !saml && !mcp}\n <Section row title={t(\"providers.form.credentials\")} lede={t(\"providers.sections.credentials_lede\", { name: named })}>\n <Field\n label={signsSecret ? t(\"providers.form.services_id\") : t(\"providers.form.client_id\")}\n bind:value={draft.clientId}\n autocomplete=\"off\"\n />\n\n {#if needsSecret}\n <Field\n label={t(\"providers.form.client_secret\")}\n type=\"password\"\n bind:value={draft.clientSecret}\n autocomplete=\"off\"\n placeholder={fresh ? \"\" : provider?.secretHeld ? t(\"providers.form.unchanged\") : \"\"}\n />\n {/if}\n\n {#if signsSecret}\n <Field label={t(\"providers.form.team_id\")} bind:value={draft.teamId} autocomplete=\"off\" />\n <Field label={t(\"providers.form.key_id\")} bind:value={draft.keyId} autocomplete=\"off\" />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"providers.form.private_key\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full max-w-sm font-mono text-xs\"\n rows=\"4\"\n bind:value={draft.privateKey}\n placeholder={fresh ? \"-----BEGIN PRIVATE KEY-----\" : t(\"providers.form.unchanged\")}\n ></textarea>\n </label>\n {/if}\n\n {#if custom}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"providers.form.sends_secret\")}</span>\n <select class=\"select select-sm w-full\" bind:value={draft.tokenAuthMethod}>\n <option value=\"client_secret_post\">{t(\"providers.form.secret_post\")}</option>\n <option value=\"client_secret_basic\">{t(\"providers.form.secret_basic\")}</option>\n <option value=\"signed_secret\">{t(\"providers.form.secret_signed\")}</option>\n </select>\n </label>\n\n <Field\n label={t(\"providers.form.extra_scopes\")}\n bind:value={draft.scopes}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder={oidc ? t(\"providers.form.oidc_scopes\") : \"read:user\"}\n />\n {/if}\n </Section>\n {/if}\n{/snippet}\n\n{#snippet signIn()}\n <Section row title={t(\"providers.sections.accounts\")} lede={t(\"providers.form.owns_hint\", { name: named })}>\n {@render toggle(\n draft.role === \"delegate\",\n (on) => (draft.role = on ? \"delegate\" : \"credential\"),\n t(\"providers.form.owns\", { name: named }),\n null,\n )}\n\n {#if draft.role === \"delegate\"}\n <Field\n label={t(\"providers.form.signup_scopes\")}\n bind:value={draft.signupScopes}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"openid profile email offline_access identities\"\n />\n {/if}\n </Section>\n\n <Section row title={t(\"providers.sections.addresses\")}>\n {#if !saml}\n {@render toggle(draft.trustsEmail, (on) => (draft.trustsEmail = on), t(\"providers.form.trusts_email\"), t(\"providers.form.trusts_email_hint\"))}\n {/if}\n\n <Field\n label={saml ? t(\"providers.form.saml_domains\") : t(\"providers.form.domains\")}\n bind:value={draft.emailDomains}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder={t(\"providers.form.any_domain\")}\n />\n </Section>\n\n {#if oidc}\n <Section row title={t(\"providers.sections.signals\")}>\n {@render toggle(\n draft.receivesSignals,\n (on) => (draft.receivesSignals = on),\n t(\"providers.form.signals\"),\n `${t(\"providers.form.signals_lead\")} ${origin}/ssf/events. ${t(\"providers.form.signals_rest\")}`,\n )}\n </Section>\n {/if}\n\n {#if custom}\n <Section row title={t(\"providers.form.claims\")} lede={t(\"providers.sections.claims_lede\")}>\n <Field\n label={saml ? t(\"providers.form.subject_saml\") : oidc ? t(\"providers.form.subject_oidc\") : t(\"providers.form.subject_path\")}\n bind:value={draft.subjectClaim}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n {#each MAPPED.filter(([claim]) => !(saml && claim === \"email_verified\")) as [claim, label] (claim)}\n <Field\n {label}\n bind:value={draft.claims[claim]}\n placeholder={saml ? t(\"providers.form.attribute_name\") : claim}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n {/each}\n </Section>\n {/if}\n{/snippet}\n\n{#snippet clients()}\n <Section row title={t(\"providers.sections.delegation\")} lede={t(\"providers.form.delegates_hint\", { name: named })}>\n {#if !mcp}\n {@render toggle(draft.delegates, (on) => (draft.delegates = on), t(\"providers.form.delegates\", { name: named }), null)}\n {/if}\n\n {#if draft.delegates || mcp}\n <Field\n label={t(\"providers.form.delegated_scopes\")}\n bind:value={draft.delegatedScopes}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder={mcp ? t(\"providers.form.server_grants\") : \"https://www.googleapis.com/auth/drive.readonly\"}\n />\n <Field\n label={t(\"providers.form.delegation_params\")}\n bind:value={draft.delegationParams}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"access_type=offline prompt=consent\"\n />\n <p class=\"hint\">\n {t(\"providers.form.delegation_asks\")}\n <code class=\"font-mono\">masks:delegate:{draft.key.trim() || \"key\"}</code>.\n {t(\"providers.form.delegation_reconnect\")}\n </p>\n {#if provider}\n <p class=\"text-sm\">{t(\"providers.facts.delegations_count\", { count: provider.delegations })}</p>\n {/if}\n {/if}\n </Section>\n{/snippet}\n\n{#if fresh}\n <Page\n title={chosen ? t(\"providers.form.add_title\", { name: chosen.custom ? protocolName(chosen.protocol) : chosen.name }) : t(\"providers.add\")}\n back={{ to: chosen ? \"/providers/new\" : \"/providers\", label: chosen ? t(\"providers.picker.back\") : t(\"providers.back\") }}\n lede={chosen ? null : t(\"providers.picker.help\")}\n >\n <Notices feedback={feedback.state} />\n\n {#if loading}\n <Spinner />\n {:else if !chosen}\n {#each [[t(\"providers.picker.known\"), known], [t(\"providers.picker.generic\"), generic]] as [heading, list] (heading)}\n {#if list.length}\n <Section title={heading}>\n <div class=\"grid gap-2 sm:grid-cols-2 lg:grid-cols-3\">\n {#each list as preset (preset.key)}\n <Link to={`/providers/new/${preset.key}`} class=\"sheet sheet-press flex items-baseline justify-between gap-3 px-4 py-3 no-underline\">\n <span class=\"text-sm font-medium\">{preset.custom ? protocolName(preset.protocol) : preset.name}</span>\n <span class=\"hint text-xs\">{preset.custom ? \"\" : protocolName(preset.protocol)}</span>\n </Link>\n {/each}\n </div>\n </Section>\n {/if}\n {/each}\n {:else if draft}\n <div class=\"grid gap-4\">\n {@render setup()}\n {#if !mcp}{@render signIn()}{/if}\n {#if !saml}{@render clients()}{/if}\n\n <div class=\"flex gap-2 border-t border-[var(--line)] pt-5\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !complete} onclick={save}>\n {busy ? t(\"providers.form.saving\") : t(\"providers.form.add\")}\n </button>\n <Link to=\"/providers\" class=\"btn btn-ghost btn-sm\">{t(\"providers.cancel\")}</Link>\n </div>\n </div>\n {/if}\n </Page>\n{:else if loading && !provider}\n <Spinner />\n{:else if !provider}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">{feedback.state.failure ?? t(\"providers.missing\")}</div>\n{:else}\n <Page title={provider.name} id={provider.key} back={{ to: \"/providers\", label: t(\"providers.back\") }} {lede}>\n {#snippet after()}\n <Marks marks={providerMarks(provider)} />\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if provider.archivedAt}\n <div class=\"callout callout-quiet\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{t(\"providers.callouts.archived\", { day: day(provider.archivedAt) })}</strong>\n </div>\n <div class=\"callout-actions\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={restore}>{t(\"providers.restore\")}</button>\n </div>\n </div>\n {:else if secretMissing(provider)}\n <div class=\"callout callout-warn\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{t(\"providers.callouts.no_secret\")}</strong>\n <span>{t(\"providers.callouts.no_secret_detail\", { name: provider.name })}</span>\n </div>\n </div>\n {/if}\n\n {#if provider.organization}\n <div class=\"callout callout-info\">\n <div class=\"callout-words\">\n <span>\n {t(\"providers.callouts.organization_lead\")}\n <Link to={`/organizations/${provider.organization.key}`}>{provider.organization.name}</Link>.\n {t(\"providers.callouts.organization_rest\")}\n </span>\n </div>\n </div>\n {/if}\n\n <Parts base={`/providers/${provider.key}`} {part} parts={PARTS} label={t(\"providers.parts.label\")} />\n\n <div class=\"grid gap-4\">\n {#if part === \"sign-in\" && !mcp}\n {@render signIn()}\n {:else if part === \"clients\" && !saml}\n {@render clients()}\n {:else if part === \"accounts\"}\n <Section>\n <Connections {api} {feedback} rows={connected} onchange={load} showActor />\n </Section>\n {:else}\n {@render setup()}\n\n {#if !provider.archivedAt}\n <Section row title={t(\"providers.danger\")} lede={mcp ? t(\"providers.danger_lede_mcp\") : t(\"providers.danger_lede\")}>\n <div class=\"flex flex-wrap gap-2\">\n {#if mcp}\n <button type=\"button\" class=\"btn btn-sm\" onclick={register}>{t(\"providers.register\")}</button>\n {/if}\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={archive}>{t(\"providers.archive\")}</button>\n </div>\n </Section>\n {/if}\n {/if}\n </div>\n\n {#if dirty}\n <div class=\"savebar\" role=\"region\" aria-label={t(\"providers.unsaved\")}>\n <span class=\"text-sm font-medium\">{t(\"providers.unsaved\")}</span>\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={discard}>{t(\"providers.discard\")}</button>\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !complete} onclick={save}>\n {busy ? t(\"providers.form.saving\") : t(\"providers.form.save\")}\n </button>\n </div>\n </div>\n {/if}\n </Page>\n{/if}\n","<script>\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { day } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n\n let { api } = $props();\n\n const FIELDS = `key name kind service label primary settings secretsHeld archivedAt createdAt`;\n\n const QUERY = `\n query Senders {\n active: senders { ${FIELDS} }\n archived: senders(archived: true) { ${FIELDS} }\n senderServices {\n service kind label\n fields { key label type secret required options default hint }\n }\n tenant { mails texts }\n }\n `;\n\n const KINDS = [\n {\n kind: \"mail\",\n title: t(\"senders.kinds.mail.title\"),\n lede: t(\"senders.kinds.mail.lede\"),\n idle: t(\"senders.kinds.mail.idle\"),\n to: \"you@example.com\",\n },\n {\n kind: \"sms\",\n title: t(\"senders.kinds.sms.title\"),\n lede: t(\"senders.kinds.sms.lede\"),\n idle: t(\"senders.kinds.sms.idle\"),\n to: \"+15551234567\",\n },\n ];\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let loading = $state(true);\n let busy = $state(false);\n let editing = $state(null);\n let draft = $state(null);\n let testing = $state({});\n\n const services = $derived(data?.senderServices ?? []);\n const serviceOf = (name) => services.find((held) => held.service === name);\n const forKind = (list, kind) => (list ?? []).filter((held) => held.kind === kind);\n\n async function load() {\n loading = true;\n\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n loading = false;\n\n if (answer) data = answer;\n }\n\n load();\n\n function blankConfig(service) {\n return Object.fromEntries(\n service.fields.map((field) => [\n field.key,\n field.secret ? \"\" : (field.default ?? (field.type === \"boolean\" ? false : \"\")),\n ]),\n );\n }\n\n function add(kind) {\n const service = services.find((held) => held.kind === kind);\n\n editing = \"\";\n draft = {\n kind,\n service: service.service,\n key: \"\",\n name: \"\",\n primary: forKind(data.active, kind).length === 0,\n config: blankConfig(service),\n };\n feedback.clear();\n }\n\n function pick(name) {\n const service = serviceOf(name);\n\n draft.service = name;\n draft.config = blankConfig(service);\n\n if (!draft.key) draft.key = name.replace(/_/g, \"-\");\n if (!draft.name) draft.name = service.label;\n }\n\n function edit(sender) {\n const service = serviceOf(sender.service);\n\n editing = sender.key;\n draft = {\n kind: sender.kind,\n service: sender.service,\n key: sender.key,\n name: sender.name,\n primary: sender.primary,\n secretsHeld: sender.secretsHeld,\n config: Object.fromEntries(\n service.fields.map((field) => [\n field.key,\n field.secret ? \"\" : (sender.settings[field.key] ?? field.default ?? \"\"),\n ]),\n ),\n };\n feedback.clear();\n }\n\n function close() {\n editing = null;\n draft = null;\n feedback.clear();\n }\n\n function config() {\n const service = serviceOf(draft.service);\n\n return Object.fromEntries(\n service.fields\n .filter((field) => !(field.secret && !draft.config[field.key]))\n .map((field) => [\n field.key,\n field.type === \"integer\" ? Number(draft.config[field.key]) || null : draft.config[field.key],\n ]),\n );\n }\n\n async function save() {\n busy = true;\n\n const fresh = editing === \"\";\n const done = await feedback.attempt(\n () =>\n fresh\n ? api.query(\n `mutation Create($key: ID!, $service: String!, $name: String!, $config: JSON, $primary: Boolean) {\n createSender(key: $key, service: $service, name: $name, config: $config, primary: $primary) {\n sender { key }\n }\n }`,\n {\n key: draft.key.trim(),\n service: draft.service,\n name: draft.name.trim(),\n config: config(),\n primary: draft.primary,\n },\n )\n : api.query(\n `mutation Update($key: ID!, $name: String, $config: JSON, $primary: Boolean) {\n updateSender(key: $key, name: $name, config: $config, primary: $primary) {\n sender { key }\n }\n }`,\n { key: draft.key, name: draft.name.trim(), config: config(), primary: draft.primary },\n ),\n fresh ? t(\"senders.added\", { name: draft.name }) : t(\"senders.saved\", { name: draft.name }),\n );\n\n busy = false;\n\n if (!done) return;\n\n close();\n await load();\n }\n\n async function act(mutation, sender, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Act($key: ID!) { ${mutation}(key: $key) { sender { key } } }`, {\n key: sender.key,\n }),\n notice,\n );\n\n if (done) await load();\n }\n\n async function makePrimary(sender) {\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Primary($key: ID!) { updateSender(key: $key, primary: true) { sender { key } } }`,\n { key: sender.key },\n ),\n t(\"senders.primary_notice\", { name: sender.name }),\n );\n\n if (done) await load();\n }\n\n async function test(sender) {\n const to = (testing[sender.key] ?? \"\").trim();\n\n if (!to) return;\n\n busy = true;\n\n const answer = await feedback.attempt(() =>\n api.query(\n `mutation Test($key: ID!, $to: String!) { testSender(key: $key, to: $to) { delivered failure } }`,\n { key: sender.key, to },\n ),\n );\n\n busy = false;\n\n if (!answer) return;\n\n if (answer.testSender.delivered) {\n feedback.say(t(\"senders.tested\", { name: sender.name, to }));\n } else {\n feedback.blame(answer.testSender.failure);\n }\n }\n\n const complete = $derived.by(() => {\n if (!draft) return false;\n\n const service = serviceOf(draft.service);\n\n return (\n draft.key.trim() &&\n draft.name.trim() &&\n service.fields.every(\n (field) =>\n !field.required ||\n field.type === \"boolean\" ||\n (field.secret && draft.secretsHeld?.includes(field.key)) ||\n String(draft.config[field.key] ?? \"\").trim(),\n )\n );\n });\n</script>\n\n<div class=\"console-page\">\n <Notices feedback={feedback.state} />\n\n {#if loading && !data}\n <Spinner />\n {:else if data}\n {#if draft}\n <Section title={editing === \"\" ? t(\"senders.form.add\") : t(\"senders.form.edit\", { name: draft.name })}>\n {#if editing === \"\"}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"senders.form.service\")}</span>\n <select\n class=\"select select-sm w-full\"\n value={draft.service}\n onchange={(event) => pick(event.currentTarget.value)}\n >\n {#each services.filter((held) => held.kind === draft.kind) as service (service.service)}\n <option value={service.service}>{service.label}</option>\n {/each}\n </select>\n </label>\n {/if}\n\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field\n label={t(\"senders.form.key\")}\n bind:value={draft.key}\n disabled={editing !== \"\"}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n <Field label={t(\"senders.form.name\")} bind:value={draft.name} />\n </div>\n\n <div class=\"grid gap-3 sm:grid-cols-2\">\n {#each serviceOf(draft.service).fields as field (field.key)}\n {#if field.type === \"boolean\"}\n <div class=\"flex flex-col gap-1 sm:col-span-2\">\n <Switch label={field.label} bind:checked={draft.config[field.key]} />\n {#if field.hint}<p class=\"hint\">{field.hint}</p>{/if}\n </div>\n {:else if field.options}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{field.label}</span>\n <select class=\"select select-sm w-full\" bind:value={draft.config[field.key]}>\n {#each field.options as option (option)}\n <option value={option}>{option}</option>\n {/each}\n </select>\n </label>\n {:else}\n <div class=\"flex flex-col gap-1\">\n <Field\n label={field.required ? field.label : t(\"senders.form.optional\", { label: field.label })}\n type={field.secret ? \"password\" : field.type === \"integer\" ? \"number\" : \"text\"}\n bind:value={draft.config[field.key]}\n autocomplete=\"off\"\n autocapitalize=\"none\"\n spellcheck=\"false\"\n placeholder={field.secret && draft.secretsHeld?.includes(field.key) ? t(\"senders.form.unchanged\") : \"\"}\n />\n {#if field.hint}<p class=\"hint\">{field.hint}</p>{/if}\n </div>\n {/if}\n {/each}\n </div>\n\n <Switch label={t(\"senders.form.primary\")} bind:checked={draft.primary} />\n\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !complete} onclick={save}>\n {editing === \"\" ? t(\"senders.form.create\") : t(\"senders.form.save\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={close}>{t(\"senders.form.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n {#each KINDS as group (group.kind)}\n {@const held = forKind(data.active, group.kind)}\n\n <Section title={group.title} lede={held.length ? group.lede : group.idle}>\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => add(group.kind)}>{t(\"senders.list.add\")}</button>\n {/snippet}\n\n {#each held as sender (sender.key)}\n <div class=\"flex flex-col gap-3 sheet p-3\">\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"font-medium\">\n {sender.name}\n {#if sender.primary}<span class=\"badge badge-success badge-sm\">{t(\"senders.list.primary\")}</span>{/if}\n </span>\n <span class=\"hint\">\n {sender.label} · <span class=\"font-mono\">{sender.key}</span> · {t(\"senders.list.added\", { day: day(sender.createdAt) })}\n </span>\n </div>\n\n <div class=\"flex flex-wrap gap-2\">\n {#if !sender.primary}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => makePrimary(sender)}>\n {t(\"senders.list.make_primary\")}\n </button>\n {/if}\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => edit(sender)}>{t(\"senders.list.edit\")}</button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() =>\n act(\n \"archiveSender\",\n sender,\n t(\"senders.archived_notice\", { name: sender.name }),\n t(\"senders.archive_confirm\", { name: sender.name }),\n )}\n >\n {t(\"senders.list.archive\")}\n </button>\n </div>\n </div>\n\n <Field\n label={t(\"senders.list.test_to\")}\n bind:value={testing[sender.key]}\n placeholder={group.to}\n save={t(\"senders.list.test\")}\n onsave={() => test(sender)}\n />\n </div>\n {/each}\n </Section>\n {/each}\n\n {#if data.archived.length}\n <Section title={t(\"senders.archived.title\")}>\n {#each data.archived as sender (sender.key)}\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <span class=\"text-sm\">\n {sender.name} <span class=\"hint\">{sender.label} · {sender.kind}</span>\n </span>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() => act(\"restoreSender\", sender, t(\"senders.restored\", { name: sender.name }))}\n >\n {t(\"senders.archived.restore\")}\n </button>\n </div>\n {/each}\n </Section>\n {/if}\n {/if}\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { untrack } from \"svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n\n let { api, template, title, onsaved } = $props();\n\n const UPDATE = `\n mutation Word($kind: ID!, $subject: String, $message: String) {\n updateMailTemplate(kind: $kind, subject: $subject, message: $message) { mailTemplate { kind } }\n }\n `;\n\n const feedback = createFeedback();\n\n let subject = $state(untrack(() => template.subject) ?? \"\");\n let message = $state(untrack(() => template.message) ?? \"\");\n let busy = $state(false);\n\n const signature = $derived(template.kind === \"signature\");\n const custom = $derived(Boolean(template.subject || template.message));\n const names = $derived(template.placeholders.map((name) => `{{${name}}}`).join(\", \"));\n\n async function save(blank = false) {\n busy = true;\n\n const done = await feedback.attempt(\n () =>\n api.query(UPDATE, {\n kind: template.kind,\n subject: blank || signature ? \"\" : subject,\n message: blank ? \"\" : message,\n }),\n blank ? t(\"mail_template.reset\", { title }) : t(\"mail_template.saved\", { title }),\n );\n\n busy = false;\n\n if (done) onsaved?.();\n }\n</script>\n\n<details class=\"mail-template\" open={custom || undefined}>\n <summary class=\"term\">\n {t(signature ? \"mail_template.signature\" : \"mail_template.template\")}{custom ? t(\"mail_template.customized\") : \"\"}\n </summary>\n\n <form\n class=\"flex flex-col gap-3 pt-3\"\n onsubmit={(event) => {\n event.preventDefault();\n save();\n }}\n >\n <Notices feedback={feedback.state} />\n\n {#if !signature}\n <Field\n label={t(\"mail_template.subject\")}\n bind:value={subject}\n maxlength=\"150\"\n placeholder={t(\"mail_template.subject_placeholder\")}\n />\n {/if}\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(signature ? \"mail_template.closing\" : \"mail_template.opening\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full\"\n rows=\"4\"\n maxlength=\"2000\"\n placeholder={t(signature ? \"mail_template.closing_placeholder\" : \"mail_template.opening_placeholder\")}\n bind:value={message}\n ></textarea>\n <span class=\"hint\">\n {t(\"mail_template.hint\", { names })}\n {#if !signature}{t(\"mail_template.hint_more\")}{/if}\n </span>\n </label>\n\n <div class=\"flex gap-2\">\n <button type=\"submit\" class=\"btn btn-sm btn-primary\" disabled={busy}>{t(\"mail_template.save\")}</button>\n {#if custom}\n <button type=\"button\" class=\"btn btn-sm btn-ghost\" disabled={busy} onclick={() => save(true)}>\n {t(\"mail_template.use_default\")}\n </button>\n {/if}\n </div>\n </form>\n</details>\n","<script>\n import { t } from \"./lib/copy.js\";\n import MailTemplate from \"./MailTemplate.svelte\";\n import Loader from \"./ui/Loader.svelte\";\n import Tip from \"./ui/Tip.svelte\";\n\n let { api } = $props();\n\n const PREVIEWS = `\n query MailPreviews($client: ID) {\n mailPreviews(client: $client) { key name journey heading subject from to html text }\n clients { clientId name approvedAt }\n mailTemplates { kind subject message placeholders }\n }\n `;\n\n const GROUPS = [\"sign_in\", \"manage\", \"account\", \"system\"];\n\n const templated = (key) => (key === \"invitation_organization\" ? \"invitation\" : key);\n\n let client = $state(\"\");\n let version = $state(0);\n let chosen = $state(null);\n let showing = $state(\"html\");\n\n function fit(event) {\n const frame = event.currentTarget;\n\n frame.style.height = `${frame.contentDocument.documentElement.scrollHeight}px`;\n }\n</script>\n\n<div class=\"console-page\">\n {#key `${client}:${version}`}\n <Loader load={() => api.query(PREVIEWS, { client: client || null })}>\n {#snippet children(data)}\n {@const previews = data.mailPreviews}\n {@const shown = previews.find((preview) => preview.key === chosen) ?? previews[0]}\n {@const templates = Object.fromEntries(data.mailTemplates.map((template) => [template.kind, template]))}\n {@const template = templates[templated(shown.key)]}\n\n <div class=\"mail\">\n <div class=\"mail-pick\">\n <select\n class=\"select select-sm w-full\"\n aria-label={t(\"emails.list\")}\n value={shown.key}\n onchange={(event) => (chosen = event.currentTarget.value)}\n >\n {#each GROUPS as journey (journey)}\n {@const members = previews.filter((preview) => preview.journey === journey)}\n\n {#if members.length}\n <optgroup label={t(`emails.groups.${journey}.title`)}>\n {#each members as preview (preview.key)}\n <option value={preview.key}>{preview.name}</option>\n {/each}\n </optgroup>\n {/if}\n {/each}\n </select>\n\n {#if shown.journey === \"sign_in\"}\n <select\n class=\"select select-sm w-full\"\n aria-label={t(\"emails.app\")}\n value={client}\n onchange={(event) => (client = event.currentTarget.value)}\n >\n <option value=\"\">{t(\"emails.no_app\")}</option>\n {#each data.clients as each (each.clientId)}\n <option value={each.clientId}>{each.approvedAt ? each.name : t(\"emails.not_approved\", { name: each.name })}</option>\n {/each}\n </select>\n {/if}\n </div>\n\n <nav class=\"mail-list\" aria-label={t(\"emails.list\")}>\n {#each GROUPS as journey (journey)}\n {@const members = previews.filter((preview) => preview.journey === journey)}\n\n {#if members.length}\n <div class=\"mail-group\">\n <div class=\"flex items-center gap-2\">\n <span class=\"term\">{t(`emails.groups.${journey}.title`)}</span>\n <Tip text={t(`emails.groups.${journey}.help`)} label={t(`emails.groups.${journey}.about`)} />\n </div>\n\n {#if journey === \"sign_in\"}\n <select\n class=\"select select-sm w-full\"\n aria-label={t(\"emails.app\")}\n value={client}\n onchange={(event) => (client = event.currentTarget.value)}\n >\n <option value=\"\">{t(\"emails.no_app\")}</option>\n {#each data.clients as each (each.clientId)}\n <option value={each.clientId}>{each.approvedAt ? each.name : t(\"emails.not_approved\", { name: each.name })}</option>\n {/each}\n </select>\n {/if}\n\n {#each members as preview (preview.key)}\n <button\n type=\"button\"\n class=\"mail-item\"\n aria-current={preview.key === shown.key ? \"true\" : undefined}\n onclick={() => (chosen = preview.key)}\n >\n {preview.name}\n </button>\n {/each}\n </div>\n {/if}\n {/each}\n </nav>\n\n <article class=\"mail-view\">\n <header class=\"mail-head\">\n <div class=\"flex min-w-0 flex-col gap-0.5\">\n <h2 class=\"mail-subject\">{shown.subject}</h2>\n <p class=\"hint\">\n {t(\"emails.headed\", {\n heading: shown.heading,\n from: shown.from || t(\"emails.no_sender\"),\n to: shown.to,\n })}\n </p>\n </div>\n\n <div class=\"range\" role=\"group\" aria-label={t(\"emails.part\")}>\n <button type=\"button\" aria-pressed={showing === \"html\"} onclick={() => (showing = \"html\")}>{t(\"emails.html\")}</button>\n <button type=\"button\" aria-pressed={showing === \"text\"} onclick={() => (showing = \"text\")}>{t(\"emails.text\")}</button>\n </div>\n </header>\n\n <div class=\"mail-words\">\n {#if template}\n {#key template.kind}\n <MailTemplate {api} template={template} title={shown.name} onsaved={() => version++} />\n {/key}\n {/if}\n\n <MailTemplate {api} template={templates.signature} title={t(\"emails.signature\")} onsaved={() => version++} />\n </div>\n\n {#if showing === \"html\" && shown.html}\n <iframe\n class=\"mail-frame\"\n title={shown.subject}\n sandbox=\"allow-same-origin\"\n srcdoc={shown.html}\n onload={fit}\n ></iframe>\n {:else}\n <pre class=\"mail-text\">{shown.text ?? \"\"}</pre>\n {/if}\n </article>\n </div>\n {/snippet}\n </Loader>\n {/key}\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n import MessageSending from \"./MessageSending.svelte\";\n import MessageTemplates from \"./MessageTemplates.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Page from \"./ui/Page.svelte\";\n\n let { api, part = null } = $props();\n\n const templates = $derived(part === \"templates\");\n</script>\n\n<Page title={t(\"messages.title\")} lede={t(templates ? \"messages.templates.lede\" : \"messages.sending.lede\")}>\n <nav class=\"settings-tabs\" aria-label={t(\"messages.parts\")}>\n <Link to=\"/messages\" class=\"settings-tab {templates ? '' : 'settings-tab-on'}\">{t(\"messages.sending.title\")}</Link>\n <Link to=\"/messages/templates\" class=\"settings-tab {templates ? 'settings-tab-on' : ''}\">{t(\"messages.templates.title\")}</Link>\n </nav>\n\n {#if templates}\n <MessageTemplates {api} />\n {:else}\n <MessageSending {api} />\n {/if}\n</Page>\n","<script>\n import ActivityParts from \"./ActivityParts.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { day } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Select from \"./ui/Select.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api } = $props();\n\n const FIELDS = `key name url actions lastDeliveredAt lastFailure archivedAt createdAt organization { key name }`;\n\n const QUERY = `\n query Streams {\n active: eventStreams { ${FIELDS} }\n archived: eventStreams(archived: true) { ${FIELDS} }\n organizations { key name }\n }\n `;\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let loading = $state(true);\n let busy = $state(false);\n let editing = $state(null);\n let draft = $state(null);\n let secret = $state(null);\n\n async function load() {\n loading = true;\n\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n loading = false;\n\n if (answer) data = answer;\n }\n\n load();\n\n const listed = (text) =>\n text\n .split(/[\\s,]+/)\n .map((held) => held.trim())\n .filter(Boolean);\n\n function add() {\n editing = \"\";\n draft = { key: \"\", name: \"\", url: \"\", actions: \"\", organization: \"\" };\n secret = null;\n feedback.clear();\n }\n\n function edit(stream) {\n editing = stream.key;\n draft = {\n key: stream.key,\n name: stream.name,\n url: stream.url,\n actions: stream.actions.join(\"\\n\"),\n organization: stream.organization?.key ?? \"\",\n };\n secret = null;\n feedback.clear();\n }\n\n function close() {\n editing = null;\n draft = null;\n feedback.clear();\n }\n\n async function save() {\n busy = true;\n\n const fresh = editing === \"\";\n const variables = {\n key: draft.key.trim(),\n name: draft.name.trim(),\n url: draft.url.trim(),\n actions: listed(draft.actions),\n organization: draft.organization,\n };\n\n const answer = await feedback.attempt(\n () =>\n fresh\n ? api.query(\n `mutation Create($key: ID!, $name: String!, $url: String!, $actions: [String!], $organization: ID) {\n createEventStream(key: $key, name: $name, url: $url, actions: $actions, organization: $organization) { secret }\n }`,\n variables,\n )\n : api.query(\n `mutation Update($key: ID!, $name: String, $url: String, $actions: [String!], $organization: ID) {\n updateEventStream(key: $key, name: $name, url: $url, actions: $actions, organization: $organization) {\n eventStream { key }\n }\n }`,\n variables,\n ),\n fresh ? t(\"streams.added\", { name: draft.name }) : t(\"streams.saved\", { name: draft.name }),\n );\n\n busy = false;\n\n if (!answer) return;\n\n secret = fresh ? answer.createEventStream.secret : null;\n\n close();\n await load();\n }\n\n async function act(mutation, stream, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Act($key: ID!) { ${mutation}(key: $key) { eventStream { key } } }`, {\n key: stream.key,\n }),\n notice,\n );\n\n if (done) await load();\n }\n\n async function rotate(stream) {\n if (!confirm(t(\"streams.rotate_confirm\", { name: stream.name }))) return;\n\n const answer = await feedback.attempt(() =>\n api.query(`mutation Rotate($key: ID!) { rotateEventStreamSecret(key: $key) { secret } }`, {\n key: stream.key,\n }),\n );\n\n if (answer) secret = answer.rotateEventStreamSecret.secret;\n }\n\n async function test(stream) {\n busy = true;\n\n const answer = await feedback.attempt(() =>\n api.query(`mutation Test($key: ID!) { testEventStream(key: $key) { delivered failure } }`, {\n key: stream.key,\n }),\n );\n\n busy = false;\n\n if (!answer) return;\n\n if (answer.testEventStream.delivered) {\n feedback.say(t(\"streams.tested\", { name: stream.name }));\n } else {\n feedback.blame(answer.testEventStream.failure);\n }\n\n await load();\n }\n\n const complete = $derived(draft?.key.trim() && draft.name.trim() && draft.url.trim());\n</script>\n\n<Page title={t(\"activity.title\")}>\n <ActivityParts part=\"streams\" />\n\n <Notices feedback={feedback.state} />\n\n {#if loading && !data}\n <Spinner />\n {:else if data}\n {#if secret}\n <Section\n title={t(\"streams.secret.title\")}\n lede={t(\"streams.secret.lede\")}\n >\n <input class=\"input input-sm w-full font-mono\" readonly value={secret} onfocus={(event) => event.currentTarget.select()} />\n <div>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => (secret = null)}>{t(\"streams.secret.saved\")}</button>\n </div>\n </Section>\n {/if}\n\n {#if draft}\n <Section title={editing === \"\" ? t(\"streams.form.add\") : t(\"streams.form.edit\", { name: draft.name })}>\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field\n label={t(\"streams.form.key\")}\n bind:value={draft.key}\n disabled={editing !== \"\"}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n <Field label={t(\"streams.form.name\")} bind:value={draft.name} />\n </div>\n\n <Field\n label={t(\"streams.form.address\")}\n type=\"url\"\n bind:value={draft.url}\n placeholder=\"https://siem.example.com/masks\"\n autocapitalize=\"none\"\n spellcheck=\"false\"\n />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"streams.form.actions\")}</span>\n <textarea\n class=\"textarea w-full font-mono\"\n rows=\"4\"\n bind:value={draft.actions}\n placeholder=\"session.started&#10;actor.deleted\"\n ></textarea>\n <p class=\"hint\">{t(\"streams.form.actions_hint\")}</p>\n </label>\n\n {#if data.organizations.length}\n <Select\n label={t(\"streams.form.events_from\")}\n value={draft.organization}\n options={[[\"\", t(\"streams.form.every_organization\")], ...data.organizations.map((held) => [held.key, t(\"streams.form.only\", { name: held.name })])]}\n onchange={(key) => (draft.organization = key)}\n />\n {/if}\n\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !complete} onclick={save}>\n {editing === \"\" ? t(\"streams.form.create\") : t(\"streams.form.save\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={close}>{t(\"streams.form.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n <Section\n title={t(\"streams.list.title\")}\n lede={data.active.length ? t(\"streams.list.lede\") : t(\"streams.list.empty\")}\n >\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-sm\" onclick={add}>{t(\"streams.list.add\")}</button>\n {/snippet}\n\n {#each data.active as stream (stream.key)}\n <div class=\"flex flex-col gap-3 sheet p-3\">\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"font-medium\">{stream.name}</span>\n <span class=\"hint break-all\">\n <span class=\"font-mono\">{stream.key}</span> · {stream.url} · {t(\"streams.list.added\", { day: day(stream.createdAt) })}\n </span>\n <span class=\"hint\">\n {stream.actions.length ? stream.actions.join(\", \") : t(\"streams.list.every_action\")}{stream.organization\n ? t(\"streams.list.only\", { name: stream.organization.name })\n : \"\"}\n </span>\n {#if stream.lastFailure}\n <span class=\"text-sm text-error\">{stream.lastFailure}</span>\n {:else if stream.lastDeliveredAt}\n <span class=\"hint\">{t(\"streams.list.last_delivered\", { day: day(stream.lastDeliveredAt) })}</span>\n {/if}\n </div>\n\n <div class=\"flex flex-wrap gap-2\">\n <button type=\"button\" class=\"btn btn-sm\" disabled={busy} onclick={() => test(stream)}>{t(\"streams.list.test\")}</button>\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => edit(stream)}>{t(\"streams.list.edit\")}</button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => rotate(stream)}>{t(\"streams.list.rotate\")}</button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() =>\n act(\n \"archiveEventStream\",\n stream,\n t(\"streams.archived_notice\", { name: stream.name }),\n t(\"streams.archive_confirm\", { name: stream.name }),\n )}\n >\n {t(\"streams.list.archive\")}\n </button>\n </div>\n </div>\n </div>\n {/each}\n </Section>\n\n {#if data.archived.length}\n <Section title={t(\"streams.archived.title\")}>\n {#each data.archived as stream (stream.key)}\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <span class=\"text-sm\">{stream.name} <span class=\"hint\">{stream.url}</span></span>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() => act(\"restoreEventStream\", stream, t(\"streams.restored\", { name: stream.name }))}\n >\n {t(\"streams.archived.restore\")}\n </button>\n </div>\n {/each}\n </Section>\n {/if}\n {/if}\n</Page>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Select from \"./ui/Select.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n\n let { api } = $props();\n\n const QUERY = `\n query SignInRules {\n tenant { namedBy browsersOnly blockedAgents riskyNetworks suspendAfter deleteAfter signInPolicy { key } }\n signInPolicies { key name }\n }\n `;\n\n const SUSPEND_AFTER = [\n [0, t(\"settings.idle.never\")],\n [90, t(\"settings.idle.after_90_days\")],\n [180, t(\"settings.idle.after_180_days\")],\n [365, t(\"settings.idle.after_a_year\")],\n [730, t(\"settings.idle.after_two_years\")],\n ];\n\n const DELETE_AFTER = [\n [0, t(\"settings.idle.never\")],\n [180, t(\"settings.idle.after_180_days\")],\n [365, t(\"settings.idle.after_a_year\")],\n [730, t(\"settings.idle.after_two_years\")],\n [1095, t(\"settings.idle.after_three_years\")],\n ];\n\n const choices = (listed, held) =>\n !held || listed.some(([days]) => days === held) ? listed : [...listed, [held, t(\"settings.after_days\", { days: held })]];\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let agents = $state(\"\");\n let networks = $state(\"\");\n\n async function load() {\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n if (!answer) return;\n\n data = answer;\n agents = answer.tenant.blockedAgents ?? \"\";\n networks = answer.tenant.riskyNetworks ?? \"\";\n }\n\n load();\n\n async function update(changes, notice) {\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Update(\n $namedBy: String, $browsersOnly: Boolean, $blockedAgents: String, $signInPolicy: ID,\n $riskyNetworks: String, $suspendAfter: Int, $deleteAfter: Int\n ) {\n updateTenant(\n namedBy: $namedBy\n browsersOnly: $browsersOnly\n blockedAgents: $blockedAgents\n riskyNetworks: $riskyNetworks\n signInPolicy: $signInPolicy\n suspendAfter: $suspendAfter\n deleteAfter: $deleteAfter\n ) { tenant { name } }\n }`,\n changes,\n ),\n notice,\n );\n\n if (done) await load();\n }\n\n function deleteAfter(days) {\n if (days && !confirm(t(\"settings.idle.delete_confirm\"))) return load();\n\n return update({ deleteAfter: days }, t(\"settings.idle.updated\"));\n }\n</script>\n\n<Notices feedback={feedback.state} />\n\n{#if data}\n <Section\n row\n title={t(\"settings.naming.title\")}\n help={t(\"settings.naming.help\")}\n >\n <Select\n value={data.tenant.namedBy}\n options={[\n [\"nickname\", t(\"settings.naming.nickname\")],\n [\"email\", t(\"settings.naming.email\")],\n [\"either\", t(\"settings.naming.either\")],\n ]}\n onchange={(namedBy) => update({ namedBy }, t(\"settings.naming.updated\"))}\n />\n </Section>\n\n <Section\n row\n title={t(\"settings.policy.title\")}\n help={t(\"settings.policy.help\")}\n >\n <Select\n value={data.tenant.signInPolicy?.key ?? \"\"}\n options={[[\"\", t(\"settings.policy.built_in\")], ...data.signInPolicies.map((policy) => [policy.key, policy.name])]}\n onchange={(signInPolicy) => update({ signInPolicy }, t(\"settings.policy.updated\"))}\n />\n </Section>\n\n <Section\n row\n title={t(\"settings.access.title\")}\n help={t(\"settings.access.help\")}\n >\n <Switch\n label={t(\"settings.access.browsers_only\")}\n checked={data.tenant.browsersOnly}\n onchange={(browsersOnly) =>\n update({ browsersOnly }, t(\"settings.access.updated\"))}\n />\n\n <Field\n label={t(\"settings.access.refused_agents\")}\n bind:value={agents}\n placeholder=\"curl, python-requests\"\n onsave={() => update({ blockedAgents: agents }, t(\"settings.access.updated\"))}\n />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"settings.access.risky_networks\")}</span>\n <textarea class=\"textarea w-full font-mono\" rows=\"3\" bind:value={networks} placeholder=\"203.0.113.0/24\"></textarea>\n <span class=\"hint\">\n {t(\"settings.access.risky_hint\")}\n </span>\n </label>\n <div>\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => update({ riskyNetworks: networks }, t(\"settings.access.networks_saved\"))}>\n {t(\"settings.access.save_networks\")}\n </button>\n </div>\n </Section>\n\n <Section\n row\n title={t(\"settings.idle.title\")}\n help={t(\"settings.idle.help\")}\n >\n <div class=\"grid max-w-xl gap-3 sm:grid-cols-2\">\n <Select\n label={t(\"settings.idle.suspend\")}\n value={data.tenant.suspendAfter ?? 0}\n options={choices(SUSPEND_AFTER, data.tenant.suspendAfter)}\n onchange={(days) => update({ suspendAfter: Number(days) }, t(\"settings.idle.updated\"))}\n />\n\n <Select\n label={t(\"settings.idle.delete\")}\n value={data.tenant.deleteAfter ?? 0}\n options={choices(DELETE_AFTER, data.tenant.deleteAfter).map(([days, label]) => [\n days,\n label,\n days > 0 && days <= (data.tenant.suspendAfter ?? 0),\n ])}\n onchange={(days) => deleteAfter(Number(days))}\n />\n </div>\n </Section>\n{/if}\n","<script>\n import SignInRules from \"./SignInRules.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n import { t } from \"./lib/copy.js\";\n import { duration } from \"./lib/policies.js\";\n\n let { api } = $props();\n\n const FIELDS = `\n key name signup nickname email emailVerified phone phoneVerified\n passwordMinimum refuseCommonPasswords passwordRequired firstFactors secondFactors secondFactorRequired appsRequireSecondFactor\n sessionLifetime sessionIdleTimeout refuseBreachedPasswords riskStepUpAt riskRefuseAt proofOfWork\n emailDomains providers confirmation hidden signupScopes default archivedAt\n clients { clientId name }\n `;\n\n const QUERY = `\n query Policies {\n active: signInPolicies { ${FIELDS} }\n archived: signInPolicies(archived: true) { ${FIELDS} }\n providers { key name }\n tenant { namedBy texts mails }\n scopesSupported\n }\n `;\n\n const ARGS = `\n $key: ID!, $name: String, $signup: Boolean, $nickname: String, $email: String,\n $emailVerified: Boolean, $phone: String, $phoneVerified: Boolean, $passwordMinimum: Int,\n $refuseCommonPasswords: Boolean, $passwordRequired: Boolean, $firstFactors: [String!], $secondFactors: [String!],\n $secondFactorRequired: Boolean, $appsRequireSecondFactor: Boolean,\n $sessionLifetime: Int, $sessionIdleTimeout: Int,\n $refuseBreachedPasswords: Boolean, $riskStepUpAt: Int, $riskRefuseAt: Int, $proofOfWork: Int, $emailDomains: [String!], $providers: [String!],\n $everyProvider: Boolean, $confirmation: String, $hidden: Boolean, $signupScopes: [String!]\n `;\n\n const PASS = `\n key: $key, name: $name, signup: $signup, nickname: $nickname, email: $email,\n emailVerified: $emailVerified, phone: $phone, phoneVerified: $phoneVerified,\n passwordMinimum: $passwordMinimum, refuseCommonPasswords: $refuseCommonPasswords, passwordRequired: $passwordRequired,\n firstFactors: $firstFactors, secondFactors: $secondFactors,\n secondFactorRequired: $secondFactorRequired, appsRequireSecondFactor: $appsRequireSecondFactor,\n sessionLifetime: $sessionLifetime, sessionIdleTimeout: $sessionIdleTimeout,\n refuseBreachedPasswords: $refuseBreachedPasswords, riskStepUpAt: $riskStepUpAt, riskRefuseAt: $riskRefuseAt, proofOfWork: $proofOfWork, emailDomains: $emailDomains,\n providers: $providers, everyProvider: $everyProvider, confirmation: $confirmation,\n hidden: $hidden, signupScopes: $signupScopes\n `;\n\n const HOUR = 3600;\n const DAY = 24 * HOUR;\n\n const LIFETIMES = [\n [null, t(\"policy_rules.values.default_lifetime\")],\n ...[HOUR, 8 * HOUR, 12 * HOUR, DAY, 7 * DAY, 30 * DAY, 90 * DAY].map((seconds) => [seconds, duration(seconds)]),\n ];\n\n const IDLE = [\n [null, t(\"policies.never\")],\n ...[15 * 60, 30 * 60, HOUR, 4 * HOUR, DAY].map((seconds) => [seconds, duration(seconds)]),\n ];\n\n const SCORES = [[null, t(\"policies.never\")], ...[30, 50, 70, 90].map((score) => [score, t(\"policies.score\", { score })])];\n\n const WORK = [\n [0, t(\"policies.form.signup.work_off\")],\n [14, t(\"policies.form.signup.work_light\")],\n [17, t(\"policies.form.signup.work_standard\")],\n [20, t(\"policies.form.signup.work_strong\")],\n ];\n\n const offeredWork = (value) =>\n WORK.some(([held]) => held === value) ? WORK : [...WORK, [value, t(\"policies.form.signup.work_bits\", { bits: value })]];\n\n const offered = (choices, value) =>\n value === null || choices.some(([held]) => held === value)\n ? choices\n : [...choices, [value, t(\"policy_rules.units.second\", { count: value })]];\n\n const labelled = (group, values) => values.map((value) => [value, t(`policies.${group}.${value}`)]);\n\n const PRESENCE = labelled(\"presence\", [\"off\", \"optional\", \"required\"]);\n\n const FIRST = labelled(\"first\", [\"password\", \"passkey\", \"provider\", \"email_code\"]);\n\n const SECOND = labelled(\"second\", [\"otp\", \"passkey\", \"backup_codes\", \"email\", \"sms\", \"trusted_device\"]);\n\n const CONFIRMATIONS = labelled(\"confirmations\", [\"none\", \"code\", \"link\", \"approval\"]);\n\n const ACCOUNT_FIELDS = [\"nickname\", \"email\", \"phone\"].map((field) => [field, t(`policies.form.account.${field}`)]);\n\n const BLANK = {\n key: \"\",\n name: \"\",\n signup: false,\n nickname: \"optional\",\n email: \"required\",\n emailVerified: false,\n phone: \"off\",\n phoneVerified: false,\n passwordMinimum: 8,\n refuseCommonPasswords: true,\n passwordRequired: false,\n firstFactors: [\"password\", \"passkey\", \"provider\"],\n secondFactors: [\"otp\", \"passkey\", \"backup_codes\"],\n secondFactorRequired: false,\n appsRequireSecondFactor: false,\n sessionLifetime: null,\n sessionIdleTimeout: null,\n refuseBreachedPasswords: false,\n riskStepUpAt: null,\n riskRefuseAt: null,\n proofOfWork: 17,\n emailDomains: \"\",\n providers: null,\n confirmation: \"none\",\n hidden: false,\n signupScopes: [],\n };\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let loading = $state(true);\n let busy = $state(false);\n let editing = $state(null);\n let draft = $state({ ...BLANK });\n\n async function load() {\n loading = true;\n\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n loading = false;\n\n if (answer) data = answer;\n }\n\n load();\n\n function add() {\n editing = \"\";\n keyTouched = false;\n draft = structuredClone(BLANK);\n feedback.clear();\n }\n\n function edit(policy) {\n editing = policy.key;\n draft = {\n ...structuredClone($state.snapshot(policy)),\n emailDomains: policy.emailDomains.join(\" \"),\n };\n feedback.clear();\n }\n\n const slug = (name) =>\n name\n .toLowerCase()\n .normalize(\"NFKD\")\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n\n let keyTouched = $state(false);\n\n function named(name) {\n draft.name = name;\n if (editing === \"\" && !keyTouched) draft.key = slug(name);\n }\n\n function close() {\n editing = null;\n feedback.clear();\n }\n\n const toggle = (list, value, on) =>\n on ? [...new Set([...list, value])] : list.filter((held) => held !== value);\n\n function variables() {\n return {\n key: draft.key.trim(),\n name: draft.name.trim(),\n signup: draft.signup,\n nickname: draft.nickname,\n email: draft.email,\n emailVerified: draft.emailVerified,\n phone: draft.phone,\n phoneVerified: draft.phoneVerified,\n passwordMinimum: Number(draft.passwordMinimum) || 8,\n refuseCommonPasswords: draft.refuseCommonPasswords,\n passwordRequired: draft.passwordRequired && draft.firstFactors.includes(\"password\"),\n firstFactors: draft.firstFactors,\n secondFactors: draft.secondFactors,\n secondFactorRequired: draft.secondFactorRequired,\n appsRequireSecondFactor: draft.appsRequireSecondFactor,\n sessionLifetime: draft.sessionLifetime,\n sessionIdleTimeout: draft.sessionIdleTimeout,\n refuseBreachedPasswords: draft.refuseBreachedPasswords,\n riskStepUpAt: draft.riskStepUpAt,\n riskRefuseAt: draft.riskRefuseAt,\n proofOfWork: Number(draft.proofOfWork) || 0,\n emailDomains: draft.emailDomains.split(/[\\s,]+/).filter(Boolean),\n providers: draft.providers ?? [],\n everyProvider: draft.providers === null,\n confirmation: draft.confirmation,\n hidden: draft.hidden,\n signupScopes: draft.signupScopes,\n };\n }\n\n async function save() {\n busy = true;\n\n const fresh = editing === \"\";\n const done = await feedback.attempt(\n () =>\n api.query(\n fresh\n ? `mutation Create(${ARGS}) { createSignInPolicy(${PASS}) { signInPolicy { key } } }`\n : `mutation Update(${ARGS}) { updateSignInPolicy(${PASS}) { signInPolicy { key } } }`,\n variables(),\n ),\n fresh ? t(\"policies.added\", { name: draft.name }) : t(\"policies.saved\", { name: draft.name }),\n );\n\n busy = false;\n\n if (!done) return;\n\n editing = null;\n await load();\n }\n\n async function act(mutation, policy, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Act($key: ID!) { ${mutation}(key: $key) { signInPolicy { key } } }`, {\n key: policy.key,\n }),\n notice,\n );\n\n if (done) await load();\n }\n\n const summary = (policy) =>\n [\n policy.signup ? t(\"policies.summary.signup_open\") : t(\"policies.summary.invitation_only\"),\n policy.secondFactorRequired ? t(\"policies.summary.second_factor_required\") : null,\n policy.appsRequireSecondFactor ? t(\"policies.summary.apps_require_second_factor\") : null,\n policy.sessionLifetime ? t(\"policies.summary.lifetime\", { duration: duration(policy.sessionLifetime) }) : null,\n policy.sessionIdleTimeout ? t(\"policies.summary.idle\", { duration: duration(policy.sessionIdleTimeout) }) : null,\n policy.confirmation !== \"none\" ? t(\"policies.summary.confirmed_by\", { confirmation: policy.confirmation }) : null,\n policy.phone === \"required\" ? t(\"policies.summary.phone_required\") : null,\n policy.hidden ? t(\"policies.summary.hidden\") : null,\n ]\n .filter(Boolean)\n .join(\" · \");\n\n const signingProviders = $derived(data?.providers ?? []);\n</script>\n\n<Page title={t(\"policies.title\")}>\n {#snippet actions()}\n {#if editing === null}\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={add}>{t(\"policies.add\")}</button>\n {/if}\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if loading && !data}\n <Spinner />\n {:else if data}\n {#if editing !== null}\n <Section title={editing === \"\" ? t(\"policies.form.new\") : draft.name}>\n <div class=\"grid gap-3 sm:grid-cols-[2fr_1fr]\">\n <Field\n label={t(\"policies.form.name\")}\n value={draft.name}\n oninput={(event) => named(event.currentTarget.value)}\n placeholder={t(\"policies.form.name_placeholder\")}\n />\n <Field\n label={t(\"policies.form.key\")}\n bind:value={draft.key}\n oninput={() => (keyTouched = true)}\n disabled={editing !== \"\"}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n class=\"input input-sm w-full font-mono\"\n />\n </div>\n\n <div class=\"policy-rows\">\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.signup.legend\")}</span>\n <div class=\"policy-controls\">\n <Switch label={t(\"policies.form.signup.open\")} bind:checked={draft.signup} />\n\n {#if draft.signup}\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field\n label={t(\"policies.form.signup.email_domains\")}\n bind:value={draft.emailDomains}\n autocapitalize=\"none\"\n spellcheck=\"false\"\n placeholder={t(\"policies.form.signup.email_domains_placeholder\")}\n />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"policies.form.signup.confirmation\")}</span>\n <select class=\"select select-sm w-full\" bind:value={draft.confirmation}>\n {#each CONFIRMATIONS as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n </label>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"policies.form.signup.work\")}</span>\n <select class=\"select select-sm w-full\" bind:value={draft.proofOfWork}>\n {#each offeredWork(draft.proofOfWork) as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n </label>\n </div>\n\n <p class=\"hint\">{t(\"policies.form.signup.work_hint\")}</p>\n\n {#if (draft.confirmation === \"code\" || draft.confirmation === \"link\") && !data.tenant.mails}\n <p class=\"text-xs text-warning\">\n {t(\"policies.form.signup.no_mail\")} <Link to=\"/messages\" class=\"link\">{t(\"policies.form.add_one\")}</Link>\n </p>\n {/if}\n\n <div class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"policies.form.signup.scopes\")}</span>\n <ScopesEditor\n value={draft.signupScopes}\n available={data.scopesSupported.filter((scope) => !scope.startsWith(\"masks:\"))}\n onchange={(scopes) => (draft.signupScopes = scopes)}\n />\n </div>\n {/if}\n\n <Switch label={t(\"policies.form.signup.hidden\")} bind:checked={draft.hidden} />\n\n {#if draft.hidden}\n <p class=\"text-xs opacity-85\">\n {t(\"policies.form.signup.hidden_hint\")}\n </p>\n {#if !data.tenant.mails}\n <p class=\"text-xs text-warning\">\n {t(\"policies.form.signup.hidden_no_mail\")}\n <Link to=\"/messages\" class=\"link\">{t(\"policies.form.add_one\")}</Link>\n </p>\n {/if}\n {:else if draft.signup}\n <p class=\"text-xs text-warning\">\n {t(\"policies.form.signup.open_warning\")}\n </p>\n {/if}\n </div>\n </div>\n\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.account.legend\")}</span>\n <div class=\"policy-controls\">\n <div class=\"grid gap-3 sm:grid-cols-3\">\n {#each ACCOUNT_FIELDS as [field, label] (field)}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{label}</span>\n <select class=\"select select-sm w-full\" bind:value={draft[field]}>\n {#each PRESENCE as [value, text] (value)}\n <option {value}>{text}</option>\n {/each}\n </select>\n </label>\n {/each}\n </div>\n\n <div class=\"flex flex-wrap gap-x-5 gap-y-2\">\n <Switch label={t(\"policies.form.account.email_verified\")} bind:checked={draft.emailVerified} />\n <Switch label={t(\"policies.form.account.phone_verified\")} bind:checked={draft.phoneVerified} />\n </div>\n\n {#if draft.phone !== \"off\" && draft.phoneVerified && !data.tenant.texts}\n <p class=\"text-xs text-warning\">\n {t(\"policies.form.account.no_sms\")} <Link to=\"/messages\" class=\"link\">{t(\"policies.form.add_one\")}</Link>\n </p>\n {/if}\n </div>\n </div>\n\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.sign_in.legend\")}</span>\n <div class=\"policy-controls\">\n <div class=\"flex flex-wrap gap-x-5 gap-y-2\">\n {#each FIRST as [value, label] (value)}\n <Switch\n label={label}\n checked={draft.firstFactors.includes(value)}\n onchange={(on) => (draft.firstFactors = toggle(draft.firstFactors, value, on))}\n />\n {/each}\n </div>\n\n {#if draft.firstFactors.includes(\"password\")}\n <div class=\"flex flex-wrap items-center gap-x-5 gap-y-2\">\n <label class=\"flex items-center gap-2 text-sm\">\n <input class=\"input input-sm w-16\" type=\"number\" min=\"8\" bind:value={draft.passwordMinimum} />\n {t(\"policies.form.sign_in.characters\")}\n </label>\n <Switch label={t(\"policies.form.sign_in.refuse_common\")} bind:checked={draft.refuseCommonPasswords} />\n {#if draft.firstFactors.includes(\"passkey\")}\n <Switch label={t(\"policies.form.sign_in.password_required\")} bind:checked={draft.passwordRequired} />\n {/if}\n </div>\n {/if}\n\n {#if draft.firstFactors.includes(\"provider\") && signingProviders.length}\n <div class=\"flex flex-wrap gap-x-5 gap-y-2\">\n <Switch\n label={t(\"policies.form.sign_in.all_providers\")}\n checked={draft.providers === null}\n onchange={(on) => (draft.providers = on ? null : signingProviders.map((held) => held.key))}\n />\n\n {#if draft.providers !== null}\n {#each signingProviders as provider (provider.key)}\n <Switch\n label={provider.name}\n checked={draft.providers.includes(provider.key)}\n onchange={(on) => (draft.providers = toggle(draft.providers, provider.key, on))}\n />\n {/each}\n {/if}\n </div>\n {/if}\n </div>\n </div>\n\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.second_factor.legend\")}</span>\n <div class=\"policy-controls\">\n <div class=\"flex flex-wrap gap-x-5 gap-y-2\">\n {#each SECOND as [value, label] (value)}\n <Switch\n label={label}\n checked={draft.secondFactors.includes(value)}\n onchange={(on) => (draft.secondFactors = toggle(draft.secondFactors, value, on))}\n />\n {/each}\n </div>\n\n <Switch label={t(\"policies.form.second_factor.required\")} bind:checked={draft.secondFactorRequired} />\n <Switch\n label={t(\"policies.form.second_factor.apps\")}\n bind:checked={draft.appsRequireSecondFactor}\n />\n </div>\n </div>\n\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.risk.legend\")}</span>\n <div class=\"policy-controls\">\n <div class=\"flex flex-wrap items-center gap-x-5 gap-y-2\">\n <label class=\"flex items-center gap-2 text-sm\">\n {t(\"policies.form.risk.step_up\")}\n <select class=\"select select-sm w-auto\" bind:value={draft.riskStepUpAt}>\n {#each offered(SCORES, draft.riskStepUpAt) as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n </label>\n <label class=\"flex items-center gap-2 text-sm\">\n {t(\"policies.form.risk.refuse\")}\n <select class=\"select select-sm w-auto\" bind:value={draft.riskRefuseAt}>\n {#each offered(SCORES, draft.riskRefuseAt) as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n </label>\n </div>\n <Switch label={t(\"policies.form.risk.refuse_breached\")} bind:checked={draft.refuseBreachedPasswords} />\n <p class=\"hint\">\n {t(\"policies.form.risk.hint\")}\n </p>\n </div>\n </div>\n\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.sessions.legend\")}</span>\n <div class=\"policy-controls\">\n <div class=\"flex flex-wrap items-center gap-x-5 gap-y-2\">\n <label class=\"flex items-center gap-2 text-sm\">\n {t(\"policies.form.sessions.last\")}\n <select class=\"select select-sm w-auto\" bind:value={draft.sessionLifetime}>\n {#each offered(LIFETIMES, draft.sessionLifetime) as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n {t(\"policies.form.sessions.after_sign_in\")}\n </label>\n <label class=\"flex items-center gap-2 text-sm\">\n {t(\"policies.form.sessions.end_after\")}\n <select class=\"select select-sm w-auto\" bind:value={draft.sessionIdleTimeout}>\n {#each offered(IDLE, draft.sessionIdleTimeout) as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n {t(\"policies.form.sessions.idle\")}\n </label>\n </div>\n <p class=\"hint\">\n {t(\"policies.form.sessions.hint\")}\n </p>\n </div>\n </div>\n </div>\n\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm\"\n disabled={busy || !draft.key.trim() || !draft.name.trim()}\n onclick={save}\n >\n {editing === \"\" ? t(\"policies.form.create\") : t(\"policies.form.save\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={close}>{t(\"policies.form.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n <Section>\n {#if data.active.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"policies.list.empty\")}</p>\n {/if}\n\n {#each data.active as policy (policy.key)}\n <div class=\"flex flex-wrap items-start justify-between gap-2 border-b border-base-300 pb-3 last:border-0 last:pb-0\">\n <div class=\"flex min-w-0 flex-col gap-1\">\n <span class=\"font-medium\">\n {policy.name}\n {#if policy.default}<span class=\"badge badge-success badge-sm\">{t(\"policies.list.default\")}</span>{/if}\n </span>\n <span class=\"hint\">{summary(policy)}</span>\n {#if policy.clients.length}\n <span class=\"hint\">\n {t(\"policies.list.used_by\")}\n {#each policy.clients as client, index (client.clientId)}\n {index ? \", \" : \"\"}<Link to={`/clients/${client.clientId}`} class=\"link\">{client.name}</Link>\n {/each}\n </span>\n {/if}\n </div>\n\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => edit(policy)}>{t(\"policies.list.edit\")}</button>\n {#if !policy.default}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() =>\n act(\n \"archiveSignInPolicy\",\n policy,\n t(\"policies.archived_notice\", { name: policy.name }),\n t(\"policies.archive_confirm\", { name: policy.name }),\n )}\n >\n {t(\"policies.list.archive\")}\n </button>\n {/if}\n </div>\n </div>\n {/each}\n </Section>\n\n {#if editing === null}\n {#key data}\n <SignInRules {api} />\n {/key}\n {/if}\n\n {#if data.archived.length}\n <Section title={t(\"policies.archived.title\")}>\n {#each data.archived as policy (policy.key)}\n <div class=\"flex items-center justify-between gap-2\">\n <span class=\"text-sm\">{policy.name}</span>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() => act(\"restoreSignInPolicy\", policy, t(\"policies.restored\", { name: policy.name }))}\n >\n {t(\"policies.archived.restore\")}\n </button>\n </div>\n {/each}\n </Section>\n {/if}\n {/if}\n</Page>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { since } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n\n let { api } = $props();\n\n const QUERY = `\n query Ldap {\n ldapBaseDn\n ldapPort\n ldapTls\n ldapCredentials { id label bindDn usedAt createdAt issuedBy { identifier } }\n tenant { ldapEnabled ldapPasswordOnly }\n }\n `;\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let label = $state(\"\");\n let issued = $state(null);\n\n async function load() {\n try {\n data = await api.query(QUERY);\n } catch (thrown) {\n feedback.blame(thrown);\n }\n }\n\n load();\n\n async function issue() {\n const done = await feedback.attempt(() =>\n api.query(\n `mutation Issue($label: String!) {\n issueLdapCredential(label: $label) { secret ldapCredential { bindDn } }\n }`,\n { label: label.trim() },\n ),\n );\n\n if (!done) return;\n\n issued = done.issueLdapCredential;\n label = \"\";\n\n await load();\n }\n\n async function revoke(credential) {\n if (!confirm(t(\"ldap.revoke_confirm\", { label: credential.label }))) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Revoke($id: ID!) { revokeLdapCredential(id: $id) { ldapCredential { id } } }`, {\n id: credential.id,\n }),\n t(\"ldap.revoked\", { label: credential.label }),\n );\n\n if (done) await load();\n }\n\n async function serve(ldapEnabled) {\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Serve($ldapEnabled: Boolean) {\n updateTenant(ldapEnabled: $ldapEnabled) { tenant { ldapEnabled } }\n }`,\n { ldapEnabled },\n ),\n t(\"ldap.serve.updated\"),\n );\n\n if (done) await load();\n }\n\n async function passwordOnly(ldapPasswordOnly) {\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation PasswordOnly($ldapPasswordOnly: Boolean) {\n updateTenant(ldapPasswordOnly: $ldapPasswordOnly) { tenant { ldapPasswordOnly } }\n }`,\n { ldapPasswordOnly },\n ),\n t(\"ldap.binds.updated\"),\n );\n\n if (done) await load();\n }\n</script>\n\n<Section row title={t(\"ldap.title\")} help={`${t(\"ldap.lede\")} ${t(\"ldap.serve.help\")}`}>\n <Notices feedback={feedback.state} />\n\n {#if data}\n <Switch label={t(\"ldap.serve.on\")} checked={data.tenant.ldapEnabled} onchange={serve} />\n\n {#if data.tenant.ldapEnabled}\n <dl class=\"ldap-facts\">\n <dt class=\"field-label\">{t(\"ldap.connect.address\")}</dt>\n <dd><code class=\"font-mono text-xs\">{t(data.ldapTls ? \"ldap.connect.ldaps\" : \"ldap.connect.port\", { port: data.ldapPort })}</code></dd>\n <dt class=\"field-label\">{t(\"ldap.connect.base_dn\")}</dt>\n <dd><code class=\"font-mono text-xs break-all\">{data.ldapBaseDn}</code></dd>\n </dl>\n\n {#if data.ldapCredentials.length}\n <ul class=\"compact-list\">\n {#each data.ldapCredentials as credential (credential.id)}\n <li>\n <div class=\"min-w-0\">\n <div class=\"text-sm font-medium\">{credential.label}</div>\n <code class=\"hint font-mono text-xs break-all\">{credential.bindDn}</code>\n <div class=\"hint text-xs\">\n {t(\"ldap.credentials.used\", { used: since(credential.usedAt, t(\"ldap.credentials.never\")) })}\n </div>\n </div>\n <button type=\"button\" class=\"btn btn-ghost btn-xs ml-auto\" onclick={() => revoke(credential)}>\n {t(\"ldap.credentials.revoke\")}\n </button>\n </li>\n {/each}\n </ul>\n {/if}\n\n <form\n class=\"join\"\n onsubmit={(event) => {\n event.preventDefault();\n issue();\n }}\n >\n <input class=\"input input-sm join-item w-full max-w-48\" aria-label={t(\"ldap.connect.label\")} placeholder=\"jellyfin\" bind:value={label} />\n <button type=\"submit\" class=\"btn btn-sm join-item\" disabled={!label.trim()}>{t(\"ldap.connect.issue\")}</button>\n </form>\n <p class=\"hint\">{t(\"ldap.connect.help\")}</p>\n\n {#if issued}\n <div class=\"alert alert-warning alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"ldap.connect.shown_once\")}</span>\n <span class=\"text-xs\">{t(\"ldap.connect.bind_dn\")}</span>\n <code class=\"font-mono text-xs break-all\">{issued.ldapCredential.bindDn}</code>\n <span class=\"text-xs\">{t(\"ldap.connect.secret\")}</span>\n <code class=\"font-mono text-xs break-all\">{issued.secret}</code>\n </div>\n {/if}\n\n <Switch label={t(\"ldap.binds.password_only\")} checked={data.tenant.ldapPasswordOnly} onchange={passwordOnly} />\n <p class=\"hint\">{t(\"ldap.binds.help\")}</p>\n {/if}\n {/if}\n</Section>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, since } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Select from \"./ui/Select.svelte\";\n\n let { api } = $props();\n\n const QUERY = `\n query Provisioning {\n scimBaseUrl\n provisioningTokens { id label usedAt expiresAt createdAt issuedBy { identifier } organization { name } }\n organizations { key name }\n }\n `;\n\n const LIFETIMES = [\n [30, \"month\"],\n [90, \"quarter\"],\n [365, \"year\"],\n ];\n\n const DAY = 86400;\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let label = $state(\"\");\n let organization = $state(\"\");\n let lifetime = $state(90);\n let issued = $state(null);\n\n async function load() {\n try {\n data = await api.query(QUERY);\n } catch (thrown) {\n feedback.blame(thrown);\n }\n }\n\n load();\n\n async function issue() {\n const done = await feedback.attempt(() =>\n api.query(\n `mutation Issue($label: String!, $expiresIn: Int, $organization: ID) {\n issueProvisioningToken(label: $label, expiresIn: $expiresIn, organization: $organization) { secret }\n }`,\n { label: label.trim() || \"Provisioning\", expiresIn: lifetime * DAY, organization: organization || null },\n ),\n );\n\n if (!done) return;\n\n issued = done.issueProvisioningToken;\n label = \"\";\n\n await load();\n }\n\n async function revoke(token) {\n if (!confirm(t(\"provisioning.revoke_confirm\", { label: token.label }))) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Revoke($id: ID!) { revokeProvisioningToken(id: $id) { provisioningToken { id } } }`,\n { id: token.id },\n ),\n t(\"provisioning.revoked\", { label: token.label }),\n );\n\n if (done) await load();\n }\n</script>\n\n<Section row title={t(\"provisioning.title\")} help={`${t(\"provisioning.lede\")} ${t(\"provisioning.connect.help\")}`}>\n <Notices feedback={feedback.state} />\n\n {#if data}\n <div class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"provisioning.connect.base_url\")}</span>\n <code class=\"tray px-2 py-1 font-mono text-xs break-all\">{data.scimBaseUrl}</code>\n </div>\n\n {#if data.provisioningTokens.length}\n <ul class=\"compact-list\">\n {#each data.provisioningTokens as token (token.id)}\n <li>\n <div class=\"min-w-0\">\n <div class=\"text-sm font-medium\">\n {token.label}{#if token.organization}<span class=\"hint\"> · {token.organization.name}</span>{/if}\n </div>\n <div class=\"hint text-xs\">\n {token.issuedBy\n ? t(\"provisioning.tokens.issued_by\", {\n identifier: token.issuedBy.identifier,\n used: since(token.usedAt, t(\"provisioning.tokens.never\")),\n expires: day(token.expiresAt),\n })\n : t(\"provisioning.tokens.detail\", {\n used: since(token.usedAt, t(\"provisioning.tokens.never\")),\n expires: day(token.expiresAt),\n })}\n </div>\n </div>\n <button type=\"button\" class=\"btn btn-ghost btn-xs ml-auto\" onclick={() => revoke(token)}>{t(\"provisioning.tokens.revoke\")}</button>\n </li>\n {/each}\n </ul>\n {/if}\n\n <form\n class=\"flex flex-wrap items-center gap-2\"\n onsubmit={(event) => {\n event.preventDefault();\n issue();\n }}\n >\n <input class=\"input input-sm w-full max-w-48\" aria-label={t(\"provisioning.connect.label\")} placeholder=\"Entra ID\" bind:value={label} />\n\n {#if data.organizations.length}\n <Select\n name={t(\"provisioning.connect.provisions\")}\n value={organization}\n options={[\n [\"\", t(\"provisioning.connect.every_account\")],\n ...data.organizations.map((held) => [held.key, t(\"provisioning.connect.only_members\", { name: held.name })]),\n ]}\n onchange={(key) => (organization = key)}\n />\n {/if}\n\n <div class=\"range\" role=\"group\" aria-label={t(\"provisioning.connect.lifetime\")}>\n {#each LIFETIMES as [days, name] (days)}\n <button type=\"button\" aria-pressed={lifetime === days} onclick={() => (lifetime = days)}>\n {t(`provisioning.lifetimes.${name}`)}\n </button>\n {/each}\n </div>\n\n <button type=\"submit\" class=\"btn btn-sm\">{t(\"provisioning.connect.issue\")}</button>\n </form>\n\n {#if issued}\n <div class=\"alert alert-warning alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"provisioning.connect.shown_once\")}</span>\n <code class=\"font-mono text-xs break-all\">{issued.secret}</code>\n </div>\n {/if}\n {/if}\n</Section>\n","<script>\n import { t } from \"./lib/copy.js\";\n import LdapSection from \"./LdapSection.svelte\";\n import ProvisioningSection from \"./ProvisioningSection.svelte\";\n import Page from \"./ui/Page.svelte\";\n\n let { api } = $props();\n</script>\n\n<Page title={t(\"directory.title\")} lede={t(\"directory.lede\")}>\n <div class=\"grid gap-4\">\n <ProvisioningSection {api} />\n\n <LdapSection {api} />\n </div>\n</Page>\n","<script>\n import { t } from \"./lib/copy.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { current, viewer, identifier, account, onsignout, onunpair, children } = $props();\n\n const TABS = [\"settings\", \"policies\", \"providers\", \"directory\", \"messages\", \"activity\"];\n\n function unpair() {\n if (confirm(t(\"settings_shell.forget_confirm\"))) onunpair();\n }\n</script>\n\n<div class=\"settings\">\n <div class=\"settings-bar\">\n <nav class=\"settings-tabs\" aria-label={t(\"settings_shell.label\")}>\n {#each TABS as tab (tab)}\n <Link\n to={`/${tab}`}\n class=\"settings-tab {current === tab ? 'settings-tab-on' : ''}\"\n >{t(`settings_shell.tabs.${tab}`)}</Link>\n {/each}\n </nav>\n\n <div class=\"settings-me\">\n <a class=\"settings-who\" href={account} title={t(\"settings_shell.account\")}>\n {#if viewer}\n <img\n src={`${viewer.avatars.photo ?? viewer.avatars.identicon}?size=64`}\n width=\"24\"\n height=\"24\"\n alt=\"\"\n class:drawn={!viewer.avatars.photo}\n onerror={(event) => (event.currentTarget.src = `${viewer.avatars.identicon}?size=64`)}\n />\n {/if}\n <span>{identifier}</span>\n </a>\n <button type=\"button\" class=\"settings-tab\" onclick={onsignout}>{t(\"settings_shell.sign_out\")}</button>\n <button type=\"button\" class=\"settings-tab settings-quiet\" onclick={unpair}>{t(\"settings_shell.forget\")}</button>\n </div>\n </div>\n\n <div class=\"min-w-0\">{@render children()}</div>\n</div>\n","<script>\n import { untrack } from \"svelte\";\n import { createApi } from \"./lib/api.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { createRouter, provideRouter } from \"./lib/router.svelte.js\";\n import { handshakeUrl, redeem } from \"./lib/pairing.js\";\n import Empty from \"./ui/Empty.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import ActorsPage from \"./ActorsPage.svelte\";\n import ActorPage from \"./ActorPage.svelte\";\n import DevicePage from \"./DevicePage.svelte\";\n import ClientsPage from \"./ClientsPage.svelte\";\n import ClientPage from \"./ClientPage.svelte\";\n import OrganizationsPage from \"./OrganizationsPage.svelte\";\n import OrganizationPage from \"./OrganizationPage.svelte\";\n import SettingsPage from \"./SettingsPage.svelte\";\n import OverviewPage from \"./OverviewPage.svelte\";\n import ActivityPage from \"./ActivityPage.svelte\";\n import ProvidersPage from \"./ProvidersPage.svelte\";\n import ProviderPage from \"./ProviderPage.svelte\";\n import MessagesPage from \"./MessagesPage.svelte\";\n import StreamsPage from \"./StreamsPage.svelte\";\n import PoliciesPage from \"./PoliciesPage.svelte\";\n import DirectoryPage from \"./DirectoryPage.svelte\";\n import SettingsShell from \"./SettingsShell.svelte\";\n\n let { boot } = $props();\n\n const api = untrack(() => createApi(boot));\n const router = untrack(() => createRouter(boot.root));\n\n provideRouter(router);\n\n let phase = $state(\"starting\");\n let failure = $state(null);\n let viewer = $state(null);\n let levels = $state(null);\n\n const limit = $derived.by(() => {\n if (!levels || levels.includes(\"owner\")) return null;\n if (levels.includes(\"security\") && levels.includes(\"support\")) return t(\"app.limited.both\");\n if (levels.includes(\"security\")) return t(\"app.limited.security\");\n if (levels.includes(\"support\")) return t(\"app.limited.support\");\n return t(\"app.limited.read\");\n });\n\n const NAV = [\n [\"\", \"overview\", '<path d=\"M3.5 10.5 10 4l6.5 6.5\"/><path d=\"M5.5 9v7h9V9\"/>'],\n [\"/actors\", \"actors\", '<circle cx=\"10\" cy=\"7\" r=\"3\"/><path d=\"M4 17c.8-3 3.2-4.5 6-4.5s5.2 1.5 6 4.5\"/>'],\n [\"/organizations\", \"organizations\", '<rect x=\"3.5\" y=\"7\" width=\"13\" height=\"9.5\" rx=\"1.5\"/><path d=\"M7.5 7V4.5h5V7\"/><path d=\"M3.5 11h13\"/>'],\n [\"/clients\", \"clients\", '<rect x=\"3\" y=\"3\" width=\"6\" height=\"6\" rx=\"1.5\"/><rect x=\"11\" y=\"3\" width=\"6\" height=\"6\" rx=\"1.5\"/><rect x=\"3\" y=\"11\" width=\"6\" height=\"6\" rx=\"1.5\"/><rect x=\"11\" y=\"11\" width=\"6\" height=\"6\" rx=\"1.5\"/>'],\n ];\n\n const SETTINGS = [\"settings\", \"policies\", \"providers\", \"directory\", \"messages\", \"activity\"];\n\n const REPAIRED = \"masks:manage:repaired\";\n\n function stale(error) {\n if (error === \"invalid_client\") return true;\n if (error !== \"invalid_scope\") return false;\n\n try {\n if (sessionStorage.getItem(REPAIRED)) return false;\n sessionStorage.setItem(REPAIRED, \"1\");\n return true;\n } catch {\n return false;\n }\n }\n\n function register() {\n location.replace(handshakeUrl(boot));\n }\n\n async function start() {\n const query = new URLSearchParams(location.search);\n\n try {\n if (stale(query.get(\"error\"))) {\n api.unpair();\n register();\n return;\n }\n\n if (query.get(\"error\")) {\n failure = query.get(\"error_description\") || query.get(\"error\");\n router.replace(\"\");\n phase = \"failed\";\n return;\n }\n\n if (query.get(\"initial_access_token\")) {\n await redeem(boot, query.get(\"initial_access_token\"));\n router.replace(\"\");\n await api.authorize(\"\");\n return;\n }\n\n if (!api.paired()) {\n register();\n return;\n }\n\n if (router.segments[0] === \"callback\") {\n const { returnTo } = await api.callback();\n router.replace(returnTo || \"\");\n ready();\n return;\n }\n\n if (!api.signedIn()) {\n await api.authorize(router.state.path.slice(boot.root.length) + router.state.search + location.hash);\n return;\n }\n\n ready();\n } catch (thrown) {\n failure = thrown.message;\n phase = \"failed\";\n }\n }\n\n let waiting = $state(0);\n\n async function countWaiting() {\n try {\n const data = await api.query(\n \"query Waiting { approvals: actorCount(pendingApproval: true) help: actorCount(recoveryRequested: true) }\",\n );\n\n waiting = data.approvals + data.help;\n } catch {\n waiting = 0;\n }\n }\n\n const section = $derived(router.segments[0] ?? \"\");\n const waitingLabel = $derived(t(\"app.waiting\", { count: waiting }));\n\n $effect(() => {\n if (phase === \"ready\" && section !== undefined) countWaiting();\n });\n\n function ready() {\n phase = \"ready\";\n\n api\n .query(\"query Viewer { viewer { identifier avatars { photo identicon } } manageLevels }\")\n .then((data) => {\n viewer = data.viewer;\n levels = data.manageLevels;\n })\n .catch(() => {});\n }\n\n start();\n\n const current = $derived(router.segments[0] ?? \"\");\n const inSettings = $derived(SETTINGS.includes(current));\n const signedInAs = $derived(\n viewer?.identifier ?? api.state.identity?.preferred_username ?? t(\"app.account\"),\n );\n\n function retry() {\n location.assign(boot.root);\n }\n\n function forget() {\n api.unpair();\n retry();\n }\n\n async function signOut() {\n location.assign((await api.signOut()) ?? boot.root);\n }\n</script>\n\n{#if phase === \"starting\"}\n <div class=\"grid min-h-screen place-items-center\">\n <Spinner label={t(\"app.starting\")} />\n </div>\n{:else if phase === \"failed\"}\n <div class=\"auth-page\">\n <main class=\"auth-col surface-terminus\">\n <div class=\"flow\">\n <span class=\"state state-bad\">{t(\"app.stopped\")}</span>\n\n <h1 class=\"prompt-title\">{t(\"app.failed\", { tenant: boot.tenant.name })}</h1>\n\n <p class=\"said\">{failure}</p>\n\n <button type=\"button\" class=\"action\" onclick={retry}>{t(\"app.retry\")}</button>\n </div>\n </main>\n </div>\n{:else}\n <div class=\"flex min-h-screen flex-col\">\n <header class=\"console-top sticky top-0 z-20\">\n <div class=\"console-bar mx-auto flex w-full max-w-6xl items-center gap-x-6 py-2\">\n <Link to=\"\" class=\"brand\"><img src=\"/masks-public/icon.svg\" alt=\"\" class=\"brand-mark\" />{boot.tenant.name}</Link>\n\n <nav class=\"nav md:flex-1\">\n {#each NAV as [to, label] (to)}\n <Link\n {to}\n class=\"nav-item {current === to.replace('/', '') ? 'nav-item-on' : ''}\"\n >{t(`app.nav.${label}`)}{#if label === \"actors\" && waiting > 0}<span class=\"nav-count\" title={waitingLabel}>{waiting}</span>{/if}</Link>\n {/each}\n </nav>\n\n <Link\n to=\"/settings\"\n class=\"console-cog ms-auto {inSettings ? 'console-cog-on' : ''}\"\n aria-label={t(\"app.settings\")}\n title={t(\"app.settings\")}\n >\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M17.03 8.46 L19.13 8.85 L19.13 11.15 L17.03 11.54 L16.06 13.88 L17.27 15.64 L15.64 17.27 L13.88 16.06 L11.54 17.03 L11.15 19.13 L8.85 19.13 L8.46 17.03 L6.12 16.06 L4.36 17.27 L2.73 15.64 L3.94 13.88 L2.97 11.54 L0.87 11.15 L0.87 8.85 L2.97 8.46 L3.94 6.12 L2.73 4.36 L4.36 2.73 L6.12 3.94 L8.46 2.97 L8.85 0.87 L11.15 0.87 L11.54 2.97 L13.88 3.94 L15.64 2.73 L17.27 4.36 L16.06 6.12 Z\" />\n <circle cx=\"10\" cy=\"10\" r=\"2.75\" />\n </svg>\n </Link>\n </div>\n </header>\n\n <main class=\"console-main mx-auto w-full max-w-6xl flex-1\">\n {#if limit}\n <p class=\"alert alert-info mb-4 text-sm\" role=\"status\">{limit}</p>\n {/if}\n {#if current === \"\"}\n <OverviewPage {api} {boot} />\n {:else if current === \"actors\"}\n {#if router.segments[1] === \"devices\" && router.segments[2]}\n <DevicePage {api} id={router.segments[2]} />\n {:else if router.segments[1]}\n <ActorPage {api} uuid={router.segments[1]} part={router.segments[2]} />\n {:else}\n <ActorsPage {api} />\n {/if}\n {:else if current === \"organizations\"}\n {#if router.segments[1]}\n <OrganizationPage {api} organizationKey={router.segments[1]} part={router.segments[2]} />\n {:else}\n <OrganizationsPage {api} />\n {/if}\n {:else if current === \"clients\"}\n {#if router.segments[1]}\n <ClientPage {api} clientId={router.segments[1]} part={router.segments[2]} />\n {:else}\n <ClientsPage {api} />\n {/if}\n {:else if inSettings}\n <SettingsShell {current} {viewer} identifier={signedInAs} account={boot.account} onsignout={signOut} onunpair={forget}>\n {#if current === \"providers\" && router.segments[1]}\n <ProviderPage {api} providerKey={router.segments[1]} part={router.segments[2]} />\n {:else if current === \"providers\"}\n <ProvidersPage {api} />\n {:else if current === \"policies\"}\n <PoliciesPage {api} />\n {:else if current === \"directory\"}\n <DirectoryPage {api} />\n {:else if current === \"messages\"}\n <MessagesPage {api} part={router.segments[1]} />\n {:else if current === \"activity\" && router.segments[1] === \"streams\"}\n <StreamsPage {api} />\n {:else if current === \"activity\"}\n <ActivityPage {api} />\n {:else}\n <SettingsPage {api} {boot} />\n {/if}\n </SettingsShell>\n {:else}\n <Empty>{t(\"app.missing\")}</Empty>\n {/if}\n </main>\n\n <nav class=\"tabbar md:hidden\" aria-label={t(\"app.sections\")}>\n {#each NAV as [to, label, icon] (to)}\n <Link {to} class=\"tabbar-item {current === to.replace('/', '') ? 'tabbar-item-on' : ''}\">\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">{@html icon}</svg>\n <span>{t(`app.nav.${label}`)}</span>\n </Link>\n {/each}\n </nav>\n </div>\n{/if}\n","import { mount } from \"svelte\";\nimport App from \"../manage/App.svelte\";\nimport { useCopy } from \"../manage/lib/copy.js\";\n\nconst target = document.getElementById(\"manage\");\n\nif (target) {\n const boot = JSON.parse(target.dataset.boot);\n\n useCopy(boot.copy, document.documentElement.lang || \"en\");\n target.replaceChildren();\n\n mount(App, { target, props: { boot } });\n}\n"],"mappings":"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"}