masks-server 0.11.0 → 0.12.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.
- checksums.yaml +4 -4
- data/app/controllers/masks/server/account_controller.rb +3 -0
- data/app/controllers/masks/server/app_passwords_controller.rb +41 -0
- data/app/controllers/masks/server/authorize_controller.rb +33 -2
- data/app/controllers/masks/server/forward_auth_controller.rb +104 -12
- data/app/controllers/masks/server/logins_controller.rb +4 -3
- data/app/controllers/masks/server/organization_access_controller.rb +39 -0
- data/app/graphql/masks/server/manage/mutations/base_mutation.rb +7 -0
- data/app/graphql/masks/server/manage/mutations/create_group.rb +6 -4
- data/app/graphql/masks/server/manage/mutations/decline_access.rb +27 -0
- data/app/graphql/masks/server/manage/mutations/grant_access.rb +29 -0
- data/app/graphql/masks/server/manage/mutations/group_source.rb +34 -0
- data/app/graphql/masks/server/manage/mutations/issue_ldap_credential.rb +5 -2
- data/app/graphql/masks/server/manage/mutations/refresh_group.rb +21 -0
- data/app/graphql/masks/server/manage/mutations/remove_group_member.rb +2 -0
- data/app/graphql/masks/server/manage/mutations/run_health_checks.rb +19 -0
- data/app/graphql/masks/server/manage/mutations/update_client.rb +6 -0
- data/app/graphql/masks/server/manage/mutations/update_group.rb +7 -4
- data/app/graphql/masks/server/manage/mutations/update_tenant.rb +14 -1
- data/app/graphql/masks/server/manage/types/access_request_type.rb +21 -0
- data/app/graphql/masks/server/manage/types/actor_type.rb +6 -0
- data/app/graphql/masks/server/manage/types/client_type.rb +12 -0
- data/app/graphql/masks/server/manage/types/group_condition_input.rb +16 -0
- data/app/graphql/masks/server/manage/types/group_condition_type.rb +29 -0
- data/app/graphql/masks/server/manage/types/group_member_type.rb +16 -0
- data/app/graphql/masks/server/manage/types/group_type.rb +17 -1
- data/app/graphql/masks/server/manage/types/health_check_type.rb +18 -0
- data/app/graphql/masks/server/manage/types/ldap_credential_type.rb +1 -0
- data/app/graphql/masks/server/manage/types/mutation_type.rb +4 -0
- data/app/graphql/masks/server/manage/types/query_type.rb +24 -0
- data/app/graphql/masks/server/manage/types/release_type.rb +16 -0
- data/app/graphql/masks/server/manage/types/tenant_type.rb +6 -1
- data/app/helpers/masks/server/account_helper.rb +4 -0
- data/app/jobs/masks/server/cleanup_job.rb +1 -0
- data/app/jobs/masks/server/health_check_job.rb +21 -0
- data/app/jobs/masks/server/refresh_groups_job.rb +18 -0
- data/app/jobs/masks/server/release_check_job.rb +21 -0
- data/app/ldap/masks/server/ldap/connection.rb +3 -2
- data/app/ldap/masks/server/ldap/gate.rb +31 -4
- data/app/logins/masks/server/login_states/second_factor.rb +1 -1
- data/app/mailers/masks/server/actor_mailer.rb +31 -0
- data/app/models/masks/server/access_request.rb +103 -0
- data/app/models/masks/server/actor.rb +6 -0
- data/app/models/masks/server/app_password.rb +91 -0
- data/app/models/masks/server/app_passwords.rb +82 -0
- data/app/models/masks/server/client.rb +15 -0
- data/app/models/masks/server/connection.rb +7 -0
- data/app/models/masks/server/declared.rb +10 -2
- data/app/models/masks/server/email_verification.rb +2 -2
- data/app/models/masks/server/event.rb +11 -1
- data/app/models/masks/server/federation/protocol.rb +1 -1
- data/app/models/masks/server/federation/saml.rb +1 -1
- data/app/models/masks/server/forward_auth_rules.rb +162 -0
- data/app/models/masks/server/group.rb +207 -4
- data/app/models/masks/server/group_member.rb +7 -0
- data/app/models/masks/server/group_rule.rb +63 -0
- data/app/models/masks/server/health.rb +243 -0
- data/app/models/masks/server/health_check.rb +27 -0
- data/app/models/masks/server/invitation.rb +2 -2
- data/app/models/masks/server/ldap_credential.rb +2 -2
- data/app/models/masks/server/login.rb +28 -2
- data/app/models/masks/server/mail_previews.rb +5 -0
- data/app/models/masks/server/mail_template.rb +2 -0
- data/app/models/masks/server/membership.rb +10 -3
- data/app/models/masks/server/notifications.rb +3 -1
- data/app/models/masks/server/password_reset.rb +2 -2
- data/app/models/masks/server/provider.rb +1 -0
- data/app/models/masks/server/queue.rb +60 -0
- data/app/models/masks/server/release.rb +74 -0
- data/app/models/masks/server/session.rb +8 -0
- data/app/models/masks/server/tenant.rb +39 -2
- data/app/models/masks/server/token.rb +2 -1
- data/app/views/masks/server/account/_app_passwords.html.erb +83 -0
- data/app/views/masks/server/account/_organizations.html.erb +33 -0
- data/app/views/masks/server/account/index.html.erb +5 -0
- data/app/views/masks/server/actor_mailer/access_declined.html.erb +5 -0
- data/app/views/masks/server/actor_mailer/access_declined.text.erb +5 -0
- data/app/views/masks/server/actor_mailer/access_granted.html.erb +7 -0
- data/app/views/masks/server/actor_mailer/access_granted.text.erb +7 -0
- data/app/views/masks/server/authorize/error.html.erb +25 -0
- data/config/locales/de/access_requests.yml +43 -0
- data/config/locales/de/account/app_passwords.yml +42 -0
- data/config/locales/de/events.yml +5 -0
- data/config/locales/de/flashes.yml +1 -0
- data/config/locales/de/group_sources.yml +5 -0
- data/config/locales/de/manage/access_requests.yml +12 -0
- data/config/locales/de/manage/app_passwords.yml +16 -0
- data/config/locales/de/manage/forward_auth_rules.yml +29 -0
- data/config/locales/de/manage/group_sources.yml +44 -0
- data/config/locales/de/manage/health.yml +78 -0
- data/config/locales/de/manage/links.yml +20 -0
- data/config/locales/en/access_requests.yml +43 -0
- data/config/locales/en/account/app_passwords.yml +42 -0
- data/config/locales/en/events.yml +5 -0
- data/config/locales/en/flashes.yml +1 -0
- data/config/locales/en/group_sources.yml +5 -0
- data/config/locales/en/manage/access_requests.yml +12 -0
- data/config/locales/en/manage/app_passwords.yml +16 -0
- data/config/locales/en/manage/forward_auth_rules.yml +29 -0
- data/config/locales/en/manage/group_sources.yml +44 -0
- data/config/locales/en/manage/health.yml +78 -0
- data/config/locales/en/manage/links.yml +20 -0
- data/config/locales/es/access_requests.yml +43 -0
- data/config/locales/es/account/app_passwords.yml +42 -0
- data/config/locales/es/events.yml +5 -0
- data/config/locales/es/flashes.yml +1 -0
- data/config/locales/es/group_sources.yml +5 -0
- data/config/locales/es/manage/access_requests.yml +12 -0
- data/config/locales/es/manage/app_passwords.yml +16 -0
- data/config/locales/es/manage/forward_auth_rules.yml +29 -0
- data/config/locales/es/manage/group_sources.yml +44 -0
- data/config/locales/es/manage/health.yml +78 -0
- data/config/locales/es/manage/links.yml +20 -0
- data/config/locales/fr/access_requests.yml +43 -0
- data/config/locales/fr/account/app_passwords.yml +42 -0
- data/config/locales/fr/events.yml +5 -0
- data/config/locales/fr/flashes.yml +1 -0
- data/config/locales/fr/group_sources.yml +5 -0
- data/config/locales/fr/manage/access_requests.yml +12 -0
- data/config/locales/fr/manage/app_passwords.yml +16 -0
- data/config/locales/fr/manage/forward_auth_rules.yml +29 -0
- data/config/locales/fr/manage/group_sources.yml +44 -0
- data/config/locales/fr/manage/health.yml +78 -0
- data/config/locales/fr/manage/links.yml +20 -0
- data/config/routes.rb +5 -0
- data/db/migrate/20261020100000_create_access_requests.rb +28 -0
- data/db/migrate/20261020110000_add_app_passwords_to_clients.rb +5 -0
- data/db/migrate/20261020120000_add_forward_auth_rules_to_clients.rb +6 -0
- data/db/migrate/20261020130000_add_sources_to_groups.rb +15 -0
- data/db/migrate/20261020140000_create_health_checks.rb +25 -0
- data/db/migrate/20261020150000_add_link_lifetimes_to_tenants.rb +8 -0
- data/db/migrate/20261021100000_add_pinned_origin_to_tenants.rb +5 -0
- data/lib/generators/masks/server/install/install_generator.rb +3 -2
- data/lib/masks/server/configuration.rb +2 -11
- data/lib/masks/server/schema_reference.rb +12 -0
- data/lib/masks/server/tenancy/middleware.rb +17 -6
- data/public/masks-assets/.vite/manifest.json +13 -13
- data/public/masks-assets/assets/{account-D46qDQCo.js → account-h7I6VUPR.js} +2 -2
- data/public/masks-assets/assets/{account-D46qDQCo.js.map → account-h7I6VUPR.js.map} +1 -1
- data/public/masks-assets/assets/{app-D7W0gAyT.css → app-BXOScMjL.css} +1 -1
- data/public/masks-assets/assets/{handshake-DIFZPSAK.js → handshake-YQpRNMIs.js} +2 -2
- data/public/masks-assets/assets/{handshake-DIFZPSAK.js.map → handshake-YQpRNMIs.js.map} +1 -1
- data/public/masks-assets/assets/initial-Cn-UuAsy.js +3 -0
- data/public/masks-assets/assets/{initial-C1GpCiEh.js.map → initial-Cn-UuAsy.js.map} +1 -1
- data/public/masks-assets/assets/{login-C_6igRZ3.js → login-C21_jb6L.js} +3 -3
- data/public/masks-assets/assets/{login-C_6igRZ3.js.map → login-C21_jb6L.js.map} +1 -1
- data/public/masks-assets/assets/{manage-D4MzaDvM.js → manage-DpVxe5sv.js} +80 -51
- data/public/masks-assets/assets/manage-DpVxe5sv.js.map +1 -0
- data/public/masks-assets/assets/passkey-5UYPVD3c.js +2 -0
- data/public/masks-assets/assets/{passkey-DIj_5LCY.js.map → passkey-5UYPVD3c.js.map} +1 -1
- data/version.txt +1 -1
- metadata +87 -14
- data/public/masks-assets/assets/initial-C1GpCiEh.js +0 -3
- data/public/masks-assets/assets/manage-D4MzaDvM.js.map +0 -1
- data/public/masks-assets/assets/passkey-DIj_5LCY.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage-DpVxe5sv.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","root_29","root_30","$.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","$.state","$.proxy","$.get","$.derived","$.first_child","$.index","$.child","$.only_child","$.sibling","$.set_text","$.delegate","root","$.from_html","root_1","root_2","root_3","$.derived","$.get","$.first_child","$.sibling","$.child","$.text","$.set_text","$.only_child","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","$.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","$.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","root_28","$.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","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","$.state","$.proxy","$.derived","$.get","$.first_child","$.sibling","$.child","$.only_child","$.set_text","$.index","$.comment","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","$.state","$.get","$.comment","$.first_child","$.only_child","$.set_text","$.derived","$.sibling","$.child","$.set_attribute","$.to_array","$.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","root_10","root_11","root_12","root_13","root_14","root_15","$.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","root_5","root_6","root_7","$.state","$.get","$.derived","$.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","$.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","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","pop","clsx","bind_group","snapshot","remove_input_defaults","fallback","derived_safe_equal","set_attribute","noop","init_select","bind_select_value","prop","getContext","comment","set_text","bind_value","next","set_value","bind_this","push","set_checked","to_array","only_child","remove_textarea_child","bind_checked","setContext","initial","user_derived","attribute_effect","reset","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","DATABASE","SHELF","HELD","database","opened","request","resolve","reject","failure","answered","heldDpopKey","shelf","found","made","forgetDpopKey","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","list","PENDING","SESSION","createBrowserClient","options","call","store","scope","resources","here","clientId","redirectUri","restored","restore","document","held","keys","refreshing","dpopKey","proved","generation","clear","save","discover","response","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","client","opts","raw","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","boot","forget","callbackUri","handshakeUrl","redeem","detach","files","walk","path","one","at","variables","createApi","build","authorization","answer","idToken","sent","file","ROUTER","createRouter","settle","root","to","provideRouter","router","useRouter","root$61","Empty","div","p","node","$$props","$$anchor","rest_excludes$1","root$60","Link","klass","follow","a","$0","root$59","Spinner","label","span","root$58","root_1$48","Marks","SHAPES","fragment","consequent","shape","tone","$$array","$$item","span_1","svg","$$render","blocked","actor","device","actorMarks","createPages","cursor","total","root$57","Pager","busy","first","last","earlier","later","nav","button","text_1","button_1","text_2","$1","$2","$3","createFeedback","blame","thrown","notice","work","formatters","formatter","kind","make","DAY","lang","MOMENT","RELATIVE","STEPS","parsed","iso","day","moment","since","gap","unit","joined","kept","root$56","Tip","id","root$55","root_1$47","root_2$39","root_3$35","root_4$33","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$54","Row","tr","root$53","Search","input","$$args","root$52","root_1$46","Table","heads","column","alternate","table","thead","th","head","tbody","root$51","root_1$45","root_2$38","root_3$34","root_4$32","root_5$29","root_6$26","root_7$22","root_8$20","root_9$14","root_10$11","root_11$10","root_12$10","root_13$9","root_14$8","root_15$6","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$50","root_1$44","root_2$37","root_3$33","root_4$31","root_5$28","root_6$25","root_7$21","root_8$19","root_9$13","root_10$10","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$49","root_1$43","root_2$36","Field","type","onsave","root$48","root_1$42","root_2$35","Notices","root$47","root_1$41","root_2$34","root_3$32","root_4$30","Page","back","hero","heading","h1","fragment_2","root$46","root_1$40","root_2$33","root_3$31","root_4$29","root_5$27","root_6$24","root_7$20","root_8$18","root_9$12","root_10$9","root_11$9","root_12$9","root_13$8","root_14$7","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$45","root_1$39","root_2$32","root_3$30","root_4$28","root_5$26","root_6$23","root_7$19","root_8$17","Connections","showActor","stop","delegation","connection","span_6","span_7","span_8","span_9","root$44","root_1$38","root_2$31","root_3$29","root_4$27","root_5$25","root_6$22","Consents","consent","GRAVE","NOTABLE","action","detailed","details","phrase","root$43","root_1$37","root_2$30","root_3$28","root_4$26","root_5$24","root_6$21","Events","empty","limit","collapse","same","other","runs","UUID","trail","ol","count","time","d","root$42","root_1$36","root_2$29","root_3$27","root_4$25","root_5$23","root_6$20","root_7$18","root_8$16","root_9$11","Presence","columns","act","session","onDevice","signOutDevice","block","unblock","signOutEverywhere","allSessions","allDevices","sessions","h3","section_1","h3_1","alternate_2","span_10","root$41","root_1$35","root_2$28","root_3$26","root_4$24","root_5$22","root_6$19","root_7$17","root_8$15","Tokens","KIND","said","family","$4","$5","root$40","Parts","root$39","root_1$34","root_2$27","root_3$25","root_4$23","root_5$21","root_6$18","root_7$16","root_8$14","root_9$10","root_10$8","root_11$8","root_12$8","root_13$7","root_14$6","root_15$5","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$2","root_29$1","root_30$1","root_31","root_32","root_33","root_34","ActorPage","FIELDS","MORE","PROFILE","viewer","draft","codes","link","uploading","yourself","PARTS","identity","approve","resetFactors","dismiss","membership","belongs","sourcedBy","toggleGroup","saveProfile","saveScopes","generate","recover","confirmation","result","reset$1","resend","confirmEmail","revokePasskey","passkey","choose","removePhoto","disable","CODE_FACTORS","turnOff","lower","suspend","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_15","fragment_5","consequent_11","div_20","code_2","d_1","text_24","consequent_12","text_25","consequent_14","fragment_10","consequent_13","text_26","text_27","text_28","p_3","text_29","text_30","text_31","d_2","node_21","consequent_23","fragment_13","node_22","node_23","consequent_16","text_32","button_7","text_33","node_24","node_25","consequent_17","div_21","text_34","span_11","text_35","div_22","button_8","text_36","button_9","text_37","node_26","field","factor","$$array_1","div_23","span_12","text_38","button_10","text_39","node_27","consequent_18","p_4","text_40","node_28","fragment_16","node_29","consequent_19","p_5","text_41","div_24","span_13","text_42","span_14","node_30","consequent_20","span_15","text_43","node_31","consequent_21","span_16","text_44","button_11","text_45","node_32","consequent_22","span_17","text_46","div_25","span_18","text_47","span_19","text_48","node_33","node_34","consequent_24","text_49","alternate_3","fragment_23","node_35","fragment_24","div_26","$$array_2","summary","text_50","div_27","$$array_3","button_12","text_51","node_36","fragment_27","div_28","div_29","img_1","span_20","text_52","div_30","classes_2","text_53","node_37","consequent_25","button_13","text_54","node_38","consequent_26","span_21","text_55","node_39","fragment_28","node_40","consequent_28","div_31","node_41","consequent_27","button_14","text_56","button_15","text_57","root$38","root_1$33","Facts","dl","term","mono","dt","dd","root$37","root_1$32","root_2$26","root_3$24","root_4$22","root_5$20","root_6$17","root_7$15","root_8$13","DevicePage","events","signOut","facts","fragment_3","root$36","root_1$31","ClientLogo","sized","root$35","root_1$30","root_2$25","Select","select","off","option","option_value","select_value","root$34","Switch","checked","onchange","root$33","root_1$29","root_2$24","root_3$23","root_4$21","root_5$19","root_6$16","root_7$14","root_8$12","root_9$9","root_10$7","root_11$7","root_12$7","root_13$6","root_14$5","ClientsPage","presets","blank","preset","lines","readMetadata","read","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$32","root_1$28","root_2$23","root_3$22","root_4$20","ForwardAuthRules","rules","OUTCOMES","LISTS","drafted","rule","split","move","by","root$31","root_1$27","root_2$22","root_3$21","Machines","machine","root$30","root_1$26","root_2$21","root_3$20","root_4$19","root_5$18","AccessRequests","grant","decline","root$29","root_1$25","root_2$20","root_3$19","root_4$18","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$17","root_5$17","root_6$15","root_7$13","root_8$11","root_9$8","root_10$6","root_11$6","root_12$6","root_13$5","root_14$4","root_15$4","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","root_28$1","root_29","root_30","ClientPage","QUERY","roles","policies","fallbackPolicy","logoutUri","jwksUri","jwks","declared","lasts","accessMinutes","refreshDays","chainDays","sector","metadataUrl","certificate","entityId","sloUrl","links","attributes","secret","secretExpired","NAME_IDS","saml","SUBJECTS","GRANTS","LINKS","placeholder","saveLinks","changes","logoChanged","saveLifetimes","differences","keyed","mapped","attribute","claim","roleList","admit","on","saveRoles","unattended","granting","signsInAsItself","knowsActorsAs","saveKeys","pending","saveKeySet","saveDeclared","saveAttributes","pairs","line","METHODS","authenticates","rotate","archive","alternate_5","fragment_18","fragment_26","p_6","p_7","label_5","select_1","option_1","option_1_value","select_1_value","fragment_32","node_42","node_43","node_44","fragment_34","node_45","node_46","node_47","label_6","select_2","format","option_2","option_2_value","select_2_value","label_7","label_8","node_48","node_49","$6","node_50","fragment_35","node_51","p_8","node_52","node_53","$$array_4","node_54","fragment_39","label_9","select_3","option_3","node_55","option_4","option_4_value","select_3_value","node_56","p_9","consequent_30","fragment_40","node_57","consequent_29","instead","fragment_41","p_10","node_58","consequent_31","fragment_42","node_59","node_60","node_61","p_11","node_62","consequent_32","form_1","node_63","node_64","node_65","node_66","node_67","node_68","consequent_33","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$16","root_5$16","root_6$14","root_7$12","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$15","root_5$15","root_6$13","root_7$11","root_8$10","root_9$7","root_10$5","root_11$5","root_12$5","root_13$4","root_14$3","root_15$3","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_21","fragment_22","root$21","root_1$17","root_2$15","root_3$15","root_4$14","root_5$14","root_6$12","root_7$10","root_8$9","root_9$6","DomainsSection","domain","host","providerOptions","proven","check","route","serve","root$20","root_1$16","root_2$14","root_3$14","root_4$13","root_5$13","root_6$11","root_7$9","root_8$8","root_9$5","root_10$4","root_11$4","root_12$4","root_13$3","GroupsSection","SOURCES","editing","sourceOptions","source","kindOptions","fieldOptions","create","edit","condition","input_3","root$19","root_1$15","root_2$13","root_3$13","root_4$12","root_5$12","root_6$10","root_7$8","root_8$7","root_9$4","SettingsPage","RETENTION","HOUR","lasting","lifetimes","usual","days","BADGE","chooseLogo","stage","activate","discard","root$18","root_1$14","root_2$12","root_3$12","root_4$11","root_5$11","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$10","root_6$9","root_7$7","root_8$6","root_9$3","root_10$3","root_11$3","root_12$3","root_13$2","root_14$2","root_15$2","OverviewPage","TONES","SPANS","MARK","SKIPPED","skipped","checking","checkFailure","skip","needs","starting","plotted","checkedAt","sentence","runChecks","need","activity","root$15","ActivityParts","root$14","root_1$12","root_2$10","root_3$10","root_4$9","root_5$9","root_6$8","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$8","ProvidersPage","root_1$10","root$12","root_2$8","root_3$8","root_4$7","root_5$7","root_6$7","root_7$6","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","origin","fragment_31","MAPPED","fragment_36","PRESETS","ARGUMENTS","extra","passed","CREATE_EXTRA","CREATE","UPDATE","connected","baseline","dirty","generic","trimmed","words","params","metadataFields","register","complete","fragment_37","fragment_45","fragment_52","consequent_34","consequent_35","consequent_36","consequent_37","fragment_58","consequent_39","consequent_38","consequent_40","root$11","root_1$9","root_2$7","root_3$7","root_4$6","root_5$6","root_6$6","root_7$5","root_8$4","root_9$1","root_10$1","root_11$1","root_12$1","MessageSending","testing","services","serviceOf","forKind","blankConfig","service","pick","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$5","root_6$5","root_7$4","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$4","root_6$4","root_7$3","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$3","root_6$3","root_7$2","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","LIFETIMES","IDLE","SCORES","score","WORK","offeredWork","labelled","FIRST","SECOND","ACCOUNT_FIELDS","BLANK","signingProviders","$$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","root_5$2","root_6$2","root_7$1","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/metadata.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/ForwardAuthRules.svelte","../../../../server/app/frontend/manage/Machines.svelte","../../../../server/app/frontend/manage/AccessRequests.svelte","../../../../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}\nconst DATABASE = \"masks\";\nconst SHELF = \"keys\";\nconst HELD = \"dpop\";\nlet database;\nfunction opened() {\n database ??= new Promise((resolve, reject) => {\n const request = indexedDB.open(DATABASE, 1);\n request.onupgradeneeded = () => request.result.createObjectStore(SHELF);\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n }).catch((failure) => {\n database = undefined;\n throw failure;\n });\n return database;\n}\nfunction answered(request) {\n return new Promise((resolve, reject) => {\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n}\nexport async function heldDpopKey() {\n try {\n const shelf = await opened();\n const found = (await answered(shelf.transaction(SHELF).objectStore(SHELF).get(HELD)));\n if (found)\n return found;\n const made = await createDpopKey();\n await answered(shelf.transaction(SHELF, \"readwrite\").objectStore(SHELF).put(made, HELD));\n return made;\n }\n catch {\n return createDpopKey();\n }\n}\nexport async function forgetDpopKey() {\n try {\n const shelf = await opened();\n await answered(shelf.transaction(SHELF, \"readwrite\").objectStore(SHELF).delete(HELD));\n }\n catch { }\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 = Object.hasOwn(KINDS, code) ? 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","export const CLIENT_PATH = \"/oauth/client.json\";\nexport function list(value) {\n if (!value)\n return [];\n return Array.isArray(value) ? value : value.split(/\\s+/).filter(Boolean);\n}\nexport function clientMetadata(options) {\n const origin = new URL(options.origin).origin;\n const home = `${origin}/`;\n const scope = list(options.scope).join(\" \");\n return {\n client_id: `${origin}${CLIENT_PATH}`,\n client_name: options.name,\n client_uri: home,\n redirect_uris: options.redirectUris ?? [home],\n post_logout_redirect_uris: options.postLogoutRedirectUris ?? [home],\n grant_types: [\"authorization_code\", \"refresh_token\"],\n response_types: [\"code\"],\n token_endpoint_auth_method: \"none\",\n application_type: \"web\",\n ...(scope ? { scope } : {}),\n ...(options.logoUri ? { logo_uri: options.logoUri } : {}),\n ...(options.dpop ? { dpop_bound_access_tokens: true } : {}),\n };\n}\n","import { dpopProof, forgetDpopKey, heldDpopKey } from \"./dpop.js\";\nimport { verifyIdToken } from \"./jwt.js\";\nimport { CLIENT_PATH, list } from \"./metadata.js\";\nimport { challenge, method, random } from \"./pkce.js\";\nimport { masksError, } from \"./types.js\";\nconst PENDING = \"masks:pending\";\nconst SESSION = \"masks:session\";\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 const here = globalThis.location?.origin;\n const clientId = options.clientId ?? (here && `${here}${CLIENT_PATH}`);\n const redirectUri = options.redirectUri ?? (here && `${here}/`);\n if (!globalThis.crypto?.subtle) {\n throw masksError(\"insecure_context\", \"serve the page over https, or from localhost, since the browser hides the cryptography a sign-in needs on any other http page\");\n }\n if (!clientId || !redirectUri) {\n throw masksError(\"invalid_request\", \"pass clientId and redirectUri when the client runs outside a browser\");\n }\n const restored = restore(store);\n let document = null;\n let held = restored?.tokens ?? null;\n let claims = restored?.identity ?? 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 ??= heldDpopKey();\n return { DPoP: await dpopProof(await dpopKey, method, url, accessToken) };\n };\n let generation = 0;\n const clear = () => {\n held = null;\n claims = null;\n save();\n };\n const save = () => {\n try {\n if (held) {\n store.setItem(SESSION, JSON.stringify({ tokens: held, identity: claims }));\n }\n else\n store.removeItem(SESSION);\n }\n catch { }\n };\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\", clientId],\n [\"redirect_uri\", 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\", clientId],\n ];\n for (const value of resources)\n body.push([\"resource\", value]);\n let tokens;\n try {\n tokens = await post(body);\n }\n catch (failure) {\n if (failure.code === \"invalid_grant\") {\n clear();\n }\n throw failure;\n }\n tokens.refresh_token ??= previous;\n save();\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\", clientId],\n ]).toString(),\n });\n };\n const client = {\n async ready() {\n const url = new URL(window.location.href);\n const answered = url.searchParams.has(\"code\") || url.searchParams.has(\"error\");\n if (!answered || store.getItem(PENDING) === null)\n return claims;\n const { returnTo } = await client.callback(url.href);\n window.history.replaceState(window.history.state, \"\", returnTo);\n return claims;\n },\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\", clientId],\n [\"redirect_uri\", 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 clear();\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: clientId,\n nonce: waiting.nonce,\n keyFor,\n });\n }\n catch (failure) {\n clear();\n throw failure;\n }\n const named = claims?.org?.key;\n if (waiting.organization && named && named !== waiting.organization) {\n clear();\n throw masksError(\"invalid_token\", `the id token does not name the organization ${waiting.organization}`);\n }\n }\n save();\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 refreshing = null;\n dpopKey = null;\n store.removeItem(PENDING);\n clear();\n await Promise.all([\n options.dpop ? forgetDpopKey() : undefined,\n leaving?.refresh_token\n ? revoke(leaving.refresh_token).catch(() => undefined)\n : 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\", 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 return client;\n}\nfunction restore(store) {\n try {\n const raw = store.getItem(SESSION);\n const found = raw ? JSON.parse(raw) : null;\n return found?.tokens?.access_token ? found : null;\n }\n catch {\n return null;\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 [\"post_logout_redirect_uri\", `${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\">← {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 \"job.failed\",\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 groupMemberships { group { key } sourcedBy }\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 source }\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 membership = (group) => actor.groupMemberships.find((held) => held.group.key === group.key);\n const belongs = (group) => Boolean(membership(group));\n const sourcedBy = (group) => membership(group)?.sourcedBy ?? null;\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 flex-wrap items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n class=\"checkbox checkbox-sm\"\n checked={belongs(group)}\n disabled={Boolean(sourcedBy(group))}\n onchange={() => toggleGroup(group)}\n />\n {group.name} <code class=\"hint font-mono\">{group.key}</code>\n {#if sourcedBy(group)}\n <span class=\"hint\">{t(`group_sources.from.${sourcedBy(group)}`)}</span>\n {:else if belongs(group) && group.source !== \"manual\"}\n <span class=\"hint\">{t(\"group_sources.by_hand\")}</span>\n {/if}\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 { untrack } from \"svelte\";\n import Section from \"./ui/Section.svelte\";\n import Select from \"./ui/Select.svelte\";\n import { t } from \"./lib/copy.js\";\n\n let { rules = [], onsave } = $props();\n\n const OUTCOMES = [\"one_factor\", \"two_factor\", \"token\", \"open\", \"deny\"].map((key) => [\n key,\n t(`forward_auth_rules.outcomes.${key}`),\n ]);\n\n const LISTS = [\"paths\", \"methods\", \"networks\", \"groups\"];\n\n const drafted = (held) =>\n held.map((rule) => ({\n ...Object.fromEntries(LISTS.map((list) => [list, (rule[list] ?? []).join(list === \"paths\" ? \"\\n\" : \", \")])),\n outcome: rule.outcome,\n }));\n\n let rows = $state(untrack(() => drafted(rules)));\n\n $effect(() => {\n rows = drafted(rules);\n });\n\n const split = (value, list) =>\n value\n .split(list === \"paths\" ? /\\n/ : /[\\s,]+/)\n .map((one) => one.trim())\n .filter(Boolean);\n\n const held = () =>\n rows.map((row) => ({\n ...Object.fromEntries(LISTS.map((list) => [list, split(row[list], list)])),\n outcome: row.outcome,\n }));\n\n function add() {\n rows = [...rows, { paths: \"\", methods: \"\", networks: \"\", groups: \"\", outcome: \"one_factor\" }];\n }\n\n function remove(index) {\n rows = rows.filter((_, at) => at !== index);\n }\n\n function move(index, by) {\n const next = [...rows];\n [next[index], next[index + by]] = [next[index + by], next[index]];\n rows = next;\n }\n</script>\n\n<Section row title={t(\"forward_auth_rules.title\")} lede={t(\"forward_auth_rules.lede\")}>\n {#if rows.length}\n <ol class=\"flex flex-col gap-4\">\n {#each rows as row, index (index)}\n <li class=\"flex flex-col gap-2 rounded-box border border-base-300 p-3\">\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <span class=\"field-label\">{t(\"forward_auth_rules.rule\", { number: index + 1 })}</span>\n <div class=\"flex gap-1\">\n <button type=\"button\" class=\"btn btn-ghost btn-xs\" disabled={index === 0} onclick={() => move(index, -1)}>\n {t(\"forward_auth_rules.up\")}\n </button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs\"\n disabled={index === rows.length - 1}\n onclick={() => move(index, 1)}\n >\n {t(\"forward_auth_rules.down\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-xs\" onclick={() => remove(index)}>\n {t(\"forward_auth_rules.remove\")}\n </button>\n </div>\n </div>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"forward_auth_rules.paths\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"2\"\n spellcheck=\"false\"\n placeholder=\"/admin/**\"\n bind:value={row.paths}\n ></textarea>\n <span class=\"hint\">{t(\"forward_auth_rules.paths_hint\")}</span>\n </label>\n\n <div class=\"grid gap-2 sm:grid-cols-3\">\n {#each [\"methods\", \"networks\", \"groups\"] as list (list)}\n <label class=\"flex min-w-0 flex-col gap-1.5\">\n <span class=\"field-label\">{t(`forward_auth_rules.${list}`)}</span>\n <input\n class=\"input input-sm w-full font-mono text-xs\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n bind:value={row[list]}\n />\n <span class=\"hint\">{t(`forward_auth_rules.${list}_hint`)}</span>\n </label>\n {/each}\n </div>\n\n <Select\n label={t(\"forward_auth_rules.outcome\")}\n value={row.outcome}\n options={OUTCOMES}\n onchange={(outcome) => (row.outcome = outcome)}\n />\n </li>\n {/each}\n </ol>\n {:else}\n <p class=\"text-sm opacity-85\">{t(\"forward_auth_rules.empty\")}</p>\n {/if}\n\n <p class=\"hint\">{t(\"forward_auth_rules.trust\")}</p>\n\n <div class=\"flex flex-wrap gap-2\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={add}>{t(\"forward_auth_rules.add\")}</button>\n <button type=\"button\" class=\"btn btn-sm btn-primary\" onclick={() => onsave(held())}>\n {t(\"forward_auth_rules.save\")}\n </button>\n </div>\n</Section>\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, onrevoked } = $props();\n\n const UNENROLL = `\n mutation Unenroll($clientId: ID!) {\n unenrollClient(clientId: $clientId) { client { archivedAt } }\n }\n `;\n\n const feedback = createFeedback();\n\n async function revoke(machine) {\n if (!confirm(t(\"machines.revoke_confirm\", { name: machine.name }))) return;\n\n const done = await feedback.attempt(\n () => api.query(UNENROLL, { clientId: machine.clientId }),\n t(\"machines.revoked\", { name: machine.name }),\n );\n\n if (done) await onrevoked();\n }\n</script>\n\n<Section title={t(\"machines.title\")} lede={t(\"machines.lede\")}>\n <Notices feedback={feedback.state} />\n\n {#if rows.length}\n <ul class=\"compact-list\">\n {#each rows as machine (machine.clientId)}\n <li class=\"flex-wrap\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"text-sm\">\n <Link to={`/clients/${machine.clientId}`} class=\"link link-hover\">{machine.name}</Link>\n </span>\n <span class=\"hint truncate text-xs\">\n <span class=\"font-mono\">{machine.clientId}</span>\n · {machine.lastSeenAt ? t(\"machines.last_seen\", { day: day(machine.lastSeenAt) }) : t(\"machines.never\")}\n · {t(\"machines.enrolled\", { day: day(machine.createdAt) })}\n </span>\n </div>\n\n <div class=\"ml-auto\">\n <button type=\"button\" class=\"btn btn-xs btn-error btn-outline\" onclick={() => revoke(machine)}>\n {t(\"machines.revoke\")}\n </button>\n </div>\n </li>\n {/each}\n </ul>\n {:else}\n <p class=\"text-sm opacity-85\">{t(\"machines.empty\")}</p>\n {/if}\n</Section>\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, labels, ondecided } = $props();\n\n const GRANT = `\n mutation GrantAccess($id: ID!, $label: String) {\n grantAccess(id: $id, label: $label) { accessRequest { id label } }\n }\n `;\n\n const DECLINE = `\n mutation DeclineAccess($id: ID!) {\n declineAccess(id: $id) { accessRequest { id } }\n }\n `;\n\n const feedback = createFeedback();\n let chosen = $state({});\n\n async function grant(request) {\n const label = chosen[request.id] ?? labels[0];\n const done = await feedback.attempt(\n () => api.query(GRANT, { id: request.id, label }),\n t(\"access_requests.granted\", { identifier: request.actor.identifier, label }),\n );\n\n if (done) await ondecided();\n }\n\n async function decline(request) {\n const done = await feedback.attempt(\n () => api.query(DECLINE, { id: request.id }),\n t(\"access_requests.declined\", { identifier: request.actor.identifier }),\n );\n\n if (done) await ondecided();\n }\n</script>\n\n<Section row title={t(\"access_requests.title\")} lede={t(\"access_requests.lede\")}>\n <Notices feedback={feedback.state} />\n\n {#if rows.length}\n <ul class=\"compact-list\">\n {#each rows as request (request.id)}\n <li class=\"flex-wrap\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"text-sm\">\n <Link to={`/actors/${request.actor.uuid}`} class=\"link link-hover\">{request.actor.identifier}</Link>\n </span>\n <span class=\"hint text-xs\">{t(\"access_requests.asked\", { day: day(request.createdAt) })}</span>\n </div>\n\n <div class=\"ml-auto flex flex-wrap items-center gap-2\">\n {#if labels.length > 1}\n <select\n class=\"select select-xs\"\n aria-label={t(\"access_requests.as\")}\n value={chosen[request.id] ?? labels[0]}\n onchange={(event) => (chosen[request.id] = event.currentTarget.value)}\n >\n {#each labels as label (label)}\n <option value={label}>{label}</option>\n {/each}\n </select>\n {/if}\n\n <button type=\"button\" class=\"btn btn-xs btn-primary\" onclick={() => grant(request)}>\n {t(\"access_requests.grant\")}\n </button>\n <button type=\"button\" class=\"btn btn-xs btn-outline\" onclick={() => decline(request)}>\n {t(\"access_requests.decline\")}\n </button>\n </div>\n </li>\n {/each}\n </ul>\n {:else}\n <p class=\"text-sm opacity-85\">{t(\"access_requests.empty\")}</p>\n {/if}\n</Section>\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 ForwardAuthRules from \"./ForwardAuthRules.svelte\";\n import Machines from \"./Machines.svelte\";\n import AccessRequests from \"./AccessRequests.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 forwardAuthRules\n backchannelLogoutUri backchannelLogoutSessionRequired\n requirePushedAuthorizationRequests requireSignedRequestObject consentRequired appPasswords jwks jwksUri\n authorizationDetailsTypes authorizationDetailsSchemas consentLifetime\n accessTokenLifetime refreshTokenLifetime refreshTokenAbsoluteLifetime\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 enrolledBy { clientId name }\n enrolled { clientId name lastSeenAt createdAt }\n accessRequests { id createdAt actor { uuid 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 chainDays = $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 let secretExpired = $derived(Boolean(client?.secretExpiresAt) && new Date(client.secretExpiresAt) < new Date());\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 refreshTokenAbsoluteLifetime: chainDays ? Number(chainDays) * 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 chainDays = data.client?.refreshTokenAbsoluteLifetime\n ? String(Math.round(data.client.refreshTokenAbsoluteLifetime / 86400))\n : \"\";\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, $refreshTokenAbsoluteLifetime: Int,\n $forwardAuthRules: JSON\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 refreshTokenAbsoluteLifetime: $refreshTokenAbsoluteLifetime\n allowedGroups: $allowedGroups\n forwardAuthRules: $forwardAuthRules\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.enrolledBy}\n <p class=\"hint text-sm\">\n {t(\"machines.enrolled_by\")}\n <Link to={`/clients/${client.enrolledBy.clientId}`} class=\"link link-hover\">{client.enrolledBy.name}</Link>\n </p>\n {/if}\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 {#if client.allowedGroups.length}\n <AccessRequests {api} rows={client.accessRequests} labels={client.allowedGroups} ondecided={load} />\n {/if}\n\n {#if client.protocol === \"forward\"}\n <ForwardAuthRules\n rules={client.forwardAuthRules}\n onsave={(forwardAuthRules) => update({ forwardAuthRules }, t(\"forward_auth_rules.saved\"))}\n />\n {/if}\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\n {#if client.namespaces.length || client.enrolled.length}\n <Machines {api} rows={client.enrolled} onrevoked={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 client.secretExpiresAt}\n <span class=\"self-center text-sm {secretExpired ? 'text-error' : 'opacity-70'}\" role=\"status\">\n {t(secretExpired ? \"client.registration.secret_expired\" : \"client.registration.secret_expires\", {\n day: day(client.secretExpiresAt),\n })}\n </span>\n {/if}\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 <Switch\n checked={client.appPasswords}\n label={t(\"client.sign_in.app_passwords\")}\n onchange={(on) =>\n update(\n { appPasswords: on },\n on ? t(\"client.notices.app_passwords_on\") : t(\"client.notices.app_passwords_off\"),\n )}\n />\n <p class=\"hint\">{t(\"client.sign_in.app_passwords_help\")}</p>\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-2\">\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.refresh_absolute\")} type=\"number\" min=\"1\" max=\"400\" bind:value={chainDays} />\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.actor\"),\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 { 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 feedback = createFeedback();\n\n const SOURCES = [\"manual\", \"rule\", \"provider\", \"group\"];\n const KINDS = [\"email_domain\", \"profile\"];\n const FIELDS = [\"name\", \"given_name\", \"family_name\", \"middle_name\", \"nickname\", \"gender\", \"zoneinfo\", \"locale\"];\n\n const GROUPS = `query Groups {\n groups { key name memberCount source rule { kind field value } providerKey upstreamGroup parentLabels refreshedAt }\n providers { key name }\n }`;\n\n let groups = $state([]);\n let providers = $state([]);\n let name = $state(\"\");\n let editing = $state(null);\n let draft = $state(null);\n let busy = $state(false);\n\n const key = $derived(\n name\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\"),\n );\n\n const sourceOptions = SOURCES.map((source) => [source, t(`group_sources.sources.${source}`)]);\n const kindOptions = KINDS.map((kind) => [kind, t(`group_sources.kinds.${kind}`)]);\n const fieldOptions = FIELDS.map((field) => [field, t(`actor.fields.${field}`)]);\n const providerOptions = $derived([[\"\", t(\"group_sources.choose_provider\")], ...providers.map((held) => [held.key, held.name])]);\n\n async function load() {\n const answer = await feedback.attempt(() => api.query(GROUPS));\n\n if (!answer) return;\n\n groups = answer.groups;\n providers = answer.providers;\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\n function edit(group) {\n editing = group.key;\n draft = {\n source: group.source,\n rule: group.rule.length ? group.rule.map((held) => ({ ...held })) : [condition()],\n providerKey: group.providerKey ?? \"\",\n upstreamGroup: group.upstreamGroup ?? \"\",\n parents: group.parentLabels.join(\", \"),\n };\n }\n\n function condition() {\n return { kind: \"email_domain\", field: \"name\", value: \"\" };\n }\n\n function close() {\n editing = null;\n draft = null;\n }\n\n async function save(group) {\n busy = true;\n\n const variables = {\n key: group.key,\n source: draft.source,\n rule: draft.source === \"rule\" ? draft.rule.map(({ kind, field, value }) => ({ kind, field: kind === \"profile\" ? field : null, value })) : [],\n providerKey: draft.source === \"provider\" ? draft.providerKey : \"\",\n upstreamGroup: draft.source === \"provider\" ? draft.upstreamGroup : \"\",\n parentLabels: draft.source === \"group\" ? draft.parents.split(/[\\s,]+/).filter(Boolean) : [],\n };\n\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Fill($key: String!, $source: String!, $rule: [GroupConditionInput!]!, $providerKey: String!, $upstreamGroup: String!, $parentLabels: [String!]!) {\n updateGroup(key: $key, source: $source, rule: $rule, providerKey: $providerKey, upstreamGroup: $upstreamGroup, parentLabels: $parentLabels) { group { key } }\n }`,\n variables,\n ),\n t(\"group_sources.saved\", { name: group.name, source: t(`group_sources.sources.${draft.source}`).toLowerCase() }),\n );\n\n busy = false;\n\n if (!done) return;\n\n close();\n await load();\n }\n\n async function refresh(group) {\n busy = true;\n\n const done = await feedback.attempt(\n () => api.query(`mutation Refresh($key: String!) { refreshGroup(key: $key) { group { key } } }`, { key: group.key }),\n t(\"group_sources.refreshed\", { name: group.name }),\n );\n\n busy = false;\n\n if (done) await load();\n }\n\n function summary(group) {\n if (group.source === \"provider\") {\n const provider = providers.find((held) => held.key === group.providerKey);\n\n return t(\"group_sources.summary.provider\", { provider: provider?.name ?? group.providerKey ?? \"\" });\n }\n\n if (group.source === \"group\") return t(\"group_sources.summary.group\", { parents: group.parentLabels.join(\", \") });\n\n return t(\"group_sources.summary.rule\");\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 class=\"flex-wrap\">\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.actors\", { count: group.memberCount })}</span>\n {#if group.source !== \"manual\"}\n <span class=\"badge badge-ghost badge-sm\">{summary(group)}</span>\n {/if}\n <span class=\"ml-auto flex items-center gap-1\">\n {#if group.source !== \"manual\"}\n <button type=\"button\" class=\"btn btn-ghost btn-xs\" disabled={busy} onclick={() => refresh(group)}>\n {t(\"group_sources.refresh\")}\n </button>\n {/if}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs\"\n aria-label={t(\"group_sources.change\", { name: group.name })}\n onclick={() => (editing === group.key ? close() : edit(group))}\n >{t(\"group_sources.source\")}</button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs\"\n aria-label={t(\"groups.delete\", { name: group.name })}\n onclick={() => remove(group)}\n >×</button>\n </span>\n\n {#if editing === group.key && draft}\n <form\n class=\"flex w-full flex-col gap-3 py-2\"\n onsubmit={(event) => {\n event.preventDefault();\n save(group);\n }}\n >\n <Select\n label={t(\"group_sources.source\")}\n value={draft.source}\n options={sourceOptions}\n disabled={busy}\n onchange={(source) => (draft.source = source)}\n />\n <p class=\"hint\">{t(`group_sources.ledes.${draft.source}`)}</p>\n\n {#if draft.source === \"rule\"}\n {#each draft.rule as held, index (index)}\n <div class=\"flex flex-wrap items-end gap-2\">\n <Select\n name={t(\"group_sources.kinds.email_domain\")}\n value={held.kind}\n options={kindOptions}\n disabled={busy}\n onchange={(kind) => (held.kind = kind)}\n />\n {#if held.kind === \"profile\"}\n <Select\n name={t(\"group_sources.field\")}\n value={held.field ?? \"name\"}\n options={fieldOptions}\n disabled={busy}\n onchange={(field) => (held.field = field)}\n />\n {/if}\n <input\n class=\"input input-sm w-full max-w-60\"\n aria-label={t(\"group_sources.value\")}\n placeholder={held.kind === \"email_domain\" ? \"example.com\" : t(\"group_sources.value\")}\n bind:value={held.value}\n disabled={busy}\n />\n {#if draft.rule.length > 1}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs\"\n aria-label={t(\"group_sources.remove_condition\")}\n disabled={busy}\n onclick={() => draft.rule.splice(index, 1)}\n >×</button>\n {/if}\n </div>\n {/each}\n {#if draft.rule.length < 5}\n <button type=\"button\" class=\"btn btn-ghost btn-xs w-fit\" disabled={busy} onclick={() => draft.rule.push(condition())}>\n {t(\"group_sources.add_condition\")}\n </button>\n {/if}\n {:else if draft.source === \"provider\"}\n {#if providers.length}\n <Select\n label={t(\"group_sources.provider\")}\n value={draft.providerKey}\n options={providerOptions}\n disabled={busy}\n onchange={(held) => (draft.providerKey = held)}\n />\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"group_sources.upstream_group\")}</span>\n <input class=\"input input-sm w-full max-w-60\" bind:value={draft.upstreamGroup} disabled={busy} />\n </label>\n {:else}\n <p class=\"hint\">{t(\"group_sources.no_providers\")}</p>\n {/if}\n {:else if draft.source === \"group\"}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"group_sources.parent_labels\")}</span>\n <input class=\"input input-sm w-full max-w-100\" bind:value={draft.parents} disabled={busy} />\n <span class=\"hint\">{t(\"group_sources.parent_labels_hint\")}</span>\n </label>\n {/if}\n\n <div class=\"flex items-center gap-2\">\n <button type=\"submit\" class=\"btn btn-sm\" disabled={busy}>{t(\"group_sources.save\")}</button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" disabled={busy} onclick={close}>{t(\"group_sources.cancel\")}</button>\n {#if group.source !== \"manual\"}\n <span class=\"hint\">\n {group.refreshedAt ? t(\"group_sources.refreshed_at\", { when: since(group.refreshedAt) }) : t(\"group_sources.never_refreshed\")}\n </span>\n {/if}\n </div>\n </form>\n {/if}\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 invitationLifetime organizationInvitationLifetime passwordResetLifetime emailVerificationLifetime\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 MINUTE = 60;\n const HOUR = 60 * MINUTE;\n const DAY = 24 * HOUR;\n\n const LINKS = [\n [\"invitationLifetime\", \"invitation\", 7 * DAY, [DAY, 3 * DAY, 7 * DAY, 14 * DAY, 30 * DAY]],\n [\"organizationInvitationLifetime\", \"organization_invitation\", 14 * DAY, [DAY, 3 * DAY, 7 * DAY, 14 * DAY, 30 * DAY]],\n [\"passwordResetLifetime\", \"password_reset\", 30 * MINUTE, [15 * MINUTE, 30 * MINUTE, HOUR, 4 * HOUR, DAY]],\n [\"emailVerificationLifetime\", \"email_verification\", 2 * DAY, [HOUR, DAY, 2 * DAY, 7 * DAY, 14 * DAY]],\n ];\n\n function lasting(seconds) {\n if (seconds % DAY === 0) return t(\"links.days\", { count: seconds / DAY });\n if (seconds % HOUR === 0) return t(\"links.hours\", { count: seconds / HOUR });\n\n return t(\"links.minutes\", { count: Math.round(seconds / MINUTE) });\n }\n\n const lifetimes = (presets, usual, held) =>\n (presets.includes(held) ? presets : [...presets, held].sort((a, b) => a - b)).map((seconds) => [\n String(seconds),\n seconds === usual ? t(\"links.default\", { length: lasting(seconds) }) : lasting(seconds),\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 $invitationLifetime: Int, $organizationInvitationLifetime: Int, $passwordResetLifetime: Int, $emailVerificationLifetime: Int\n ) {\n updateTenant(\n name: $name\n dynamicClientScopes: $dynamicClientScopes\n dynamicRegistration: $dynamicRegistration\n eventRetentionDays: $eventRetentionDays\n accentColor: $accentColor\n keyRotationDays: $keyRotationDays\n invitationLifetime: $invitationLifetime\n organizationInvitationLifetime: $organizationInvitationLifetime\n passwordResetLifetime: $passwordResetLifetime\n emailVerificationLifetime: $emailVerificationLifetime\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 row title={t(\"links.title\")} help={t(\"links.help\")}>\n <div class=\"grid gap-3 sm:grid-cols-2\">\n {#each LINKS as [field, key, usual, presets] (field)}\n <Select\n label={t(`links.${key}`)}\n value={String(data.tenant[field])}\n options={lifetimes(presets, usual, data.tenant[field])}\n onchange={(seconds) => update({ [field]: Number(seconds) }, t(\"links.updated\"))}\n />\n {/each}\n </div>\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 { moment, 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 health { name status summary details checkedAt changedAt }\n release { version url operatorStep }\n }\n `;\n\n const RUN_CHECKS = `\n mutation RunHealthChecks {\n runHealthChecks { health { name status summary details checkedAt changedAt } }\n }\n `;\n\n const TONES = { ok: \"good\", warning: \"warn\", failing: \"bad\" };\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 let checking = $state(false);\n let checkFailure = $state(null);\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 const checkedAt = $derived(data?.health.length ? data.health.map((check) => check.checkedAt).sort().at(-1) : null);\n\n function sentence(check) {\n const details = check.details ?? {};\n const values = {\n ...details,\n jobs: Array.isArray(details.jobs) ? details.jobs.join(\", \") : details.jobs,\n domains: Array.isArray(details.domains) ? details.domains.join(\", \") : details.domains,\n since: details.since ? moment(details.since) : details.since,\n };\n\n return t(`health.checks.${check.name}.${check.summary}`, values);\n }\n\n async function runChecks() {\n checking = true;\n checkFailure = null;\n\n try {\n const answer = await api.query(RUN_CHECKS);\n data = { ...data, health: answer.runHealthChecks.health };\n } catch (thrown) {\n checkFailure = thrown.message;\n } finally {\n checking = false;\n }\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 || data.release}\n <div class=\"flex flex-col gap-2\">\n {#if data.release}\n <div class=\"callout callout-info\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{t(\"health.release.available\", { version: data.release.version })}</strong>\n {#if data.release.operatorStep}<span class=\"hint\">{t(\"health.release.operator\")}</span>{/if}\n </div>\n <div class=\"callout-actions\">\n <a class=\"btn btn-sm\" href={data.release.url} target=\"_blank\" rel=\"noreferrer noopener\">{t(\"health.release.notes\")}</a>\n </div>\n </div>\n {/if}\n\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(\"health.title\")} lede={t(\"health.lede\")}>\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" disabled={checking} onclick={runChecks}>\n {checking ? t(\"health.checking\") : t(\"health.check_now\")}\n </button>\n {/snippet}\n\n {#if checkFailure}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">{t(\"health.failed\", { failure: checkFailure })}</div>\n {/if}\n\n {#if data.health.length}\n <ul class=\"compact-list\" aria-label={t(\"health.title\")}>\n {#each data.health as check (check.name)}\n <li class=\"items-start\">\n <span class=\"mark mark-{TONES[check.status]} mt-1\" role=\"img\" aria-label={t(`health.statuses.${check.status}`)} title={t(`health.statuses.${check.status}`)}>\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\"><circle cx=\"10\" cy=\"10\" r=\"5\" /></svg>\n </span>\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"text-sm font-medium\">{t(`health.checks.${check.name}.title`)}</span>\n <span class=\"text-sm\">{sentence(check)}</span>\n {#if check.status !== \"ok\"}\n <span class=\"hint text-xs\">{t(`health.checks.${check.name}.advice`, check.details ?? {})}</span>\n {/if}\n </div>\n </li>\n {/each}\n </ul>\n <p class=\"hint text-xs\">{t(\"health.checked\", { when: since(checkedAt) })}</p>\n {:else}\n <p class=\"hint\">{t(\"health.never\")}</p>\n {/if}\n </Section>\n\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 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 ldapLocalOnly\n ldapCredentials { id label bindDn usedAt createdAt issuedBy { identifier } client { clientId name } }\n clients(limit: 200) { clientId name appPasswords }\n tenant { ldapEnabled ldapPasswordOnly }\n }\n `;\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let label = $state(\"\");\n let clientId = $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!, $clientId: ID) {\n issueLdapCredential(label: $label, clientId: $clientId) { secret ldapCredential { bindDn } }\n }`,\n { label: label.trim(), clientId: clientId || null },\n ),\n );\n\n if (!done) return;\n\n issued = done.issueLdapCredential;\n label = \"\";\n clientId = \"\";\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.ldapLocalOnly}\n <p class=\"hint\">{t(\"ldap.connect.local_only\")}</p>\n {/if}\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 {#if credential.client}\n <div class=\"hint\">{t(\"ldap.credentials.app\", { name: credential.client.name })}</div>\n {/if}\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 <select class=\"select select-sm join-item w-full max-w-48\" aria-label={t(\"ldap.connect.app\")} bind:value={clientId}>\n <option value=\"\">{t(\"ldap.connect.no_app\")}</option>\n {#each data.clients as client (client.clientId)}\n <option value={client.clientId}>{client.name}</option>\n {/each}\n </select>\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 <p class=\"hint\">{t(\"ldap.connect.app_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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"}
|